IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Séparer les layout des slots

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut Séparer les layout des slots
    Bonjours,

    J'essaye de faire 2 classes, 1 pour le layout et l'autre pour les action sur les bouttons.

    Mais malheureusement cela ne veux pas marcher, pourtant je suis bien les tutoriel de developpez...

    Voici comment j'essaye de faire.

    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    #include <QtGui/QApplication>
    #include "MaFenetre.h"
     
     
    typedef char CHAR;
    typedef wchar_t WCHAR;
     
    #ifndef UNICODE
    typedef CHAR TCHAR;
    #else
    typedef WCHAR TCHAR;
    #endif
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        MaFenetre fenetre;
        fenetre.show();
        return app.exec();
    }
    MaFenetre.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #ifndef DEF_MAFENETRE
    #define DEF_MAFENETRE
     
    #include <QtGui/QApplication>
    #include <QtGui>
     
    class MaFenetre : public QWidget
    {
        Q_OBJECT
     
        public:
        MaFenetre();
     
    	private :
    	QPushButton *btn_test;
    };
     
    #endif
    MaFenetre.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    #include "MaFenetre.h"
    #include <stdio.h>
    #include "windows.h"
    #include <iostream>
    #include "MaClass.h"
    MaFenetre::MaFenetre() : QWidget()
    {
     
    	btn_test = new QPushButton("test");
     
    }
    MaClass::MaClass() : QWidget() {
    	QObject::connect(btn_test, SIGNAL(clicked()), this, SLOT(click_boutton()));
    }
    MaClass.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    #ifndef DEF_MACLASS
    #define DEF_MACLASS
    #include <stdio.h>
    #include "windows.h"
    #include "main.h"
    #include <iostream>
    #include <string>
    #include <QtGui/QApplication>
    #include <QtGui>
     
    class MaClass : public QWidget
    {
        Q_OBJECT
     
    	public :
    	MaClass();
     
    	public slots :
    	void click_boutton();
     
     
    	private :
    		MaFenetre btn_test;
    };
     
    #endif
    MaClass.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include "MaClass.h"
     
    using namespace std;
     
    void MaClass::click_boutton()
    {
    	HWND hBlocNotes = FindWindow(TEXT("blocnotes"), NULL);
    	HWND tool = FindWindow(TEXT("MyProject"), NULL);
    	Sleep(1000);
    }
    Et voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    \MaFenetre.cpp(123): error C2664: 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)'*: impossible de convertir le paramètre 1 de 'MaFenetre' en 'const QObject *'
    1>          Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
    1>  main.cpp
    1>  MaClass.cpp
    1>c:\users\moi\documents\visual studio 2010\projects\myproject\myproject\MaCLass.h(36): error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'btn_test'
    1>c:\users\moi\documents\visual studio 2010\projects\myproject\myproject\MaCLass.h(36): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>c:\users\moi\documents\visual studio 2010\projects\myproject\myproject\MaCLass.h(36): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Pourrais-tu nous montrer le code concerné par l'erreur (juste les bonnes lignes) ? D'ailleurs, en le lisant tu devrais trouver la solution.

    Apparemment pour la première tu as mis un objet MaFenetre alors qu'il faut un pointeur sur cet objet.

    Pour la deuxième, besoin du code.

  3. #3
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Merci de votre reponse.

    Voici ce que vous me demandez.

    \MaFenetre.cpp(123): error C2664: 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)'*: impossible de convertir le paramètre 1 de 'MaFenetre' en 'const QObject *'
    1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QObject::connect(btn_test, SIGNAL(clicked()), this, SLOT(click_boutton()));

    c:\users\moi\documents\visual studio 2010\projects\myproject\myproject\MaCLass.h(36): error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'btn_test'
    1>c:\users\moi\documents\visual studio 2010\projects\myproject\myproject\MaCLass.h(36): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>c:\users\moi\documents\visual studio 2010\projects\myproject\myproject\MaCLass.h(36): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaFenetre btn_test;

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Par défaut
    Bonjour,
    tu as défini plusieurs btn_test:
    dans MaFenetre.h en tant de QPushButton*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class MaFenetre : public QWidget
    {
        Q_OBJECT
     
        public:
        MaFenetre();
     
    	private :
    	QPushButton *btn_test;
    };
    dans MaClass.h en tant que MaFenetre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class MaClass : public QWidget
    {
        Q_OBJECT
     
    	public :
    	MaClass();
     
    	public slots :
    	void click_boutton();
     
     
    	private :
    		MaFenetre btn_test;
    };
    en fin dans MaFenetre.cpp tu appelles le constructeur de MaClass dans lequel tu connectes btn_test qui est de type MaFenetre comme s'il était un QPushButton*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MaFenetre::MaFenetre() : QWidget()
    {
     
    	btn_test = new QPushButton("test");
     
    }
    MaClass::MaClass() : QWidget() {
    	QObject::connect(btn_test, SIGNAL(clicked()), this, SLOT(click_boutton()));
    }

  5. #5
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Alors pour ce qui est des erreurs je ne les ai pas faite, c'est en recopiant les codes que j'ai commis des erreurs,

    Donc ce qui donne :

    MaFenetre.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #ifndef DEF_MAFENETRE
    #define DEF_MAFENETRE
     
    #include <QtGui/QApplication>
    #include <QtGui>
     
    class MaFenetre : public QWidget
    {
        Q_OBJECT
     
        public:
        MaFenetre();
     
    	private :
    	QPushButton *btn_test;
    };
     
    #endif
    MaFenetre.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    #include "MaFenetre.h"
    #include <stdio.h>
    #include "windows.h"
    #include <iostream>
    #include "MaClass.h"
    MaFenetre::MaFenetre() : QWidget()
    {
     
    	btn_test = new QPushButton("test");
     
    }
    MaClass::MaClass() : QWidget() {
    	QObject::connect(btn_test, SIGNAL(clicked()), this, SLOT(click_boutton()));
    }
    MaClass.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    #ifndef DEF_MACLASS
    #define DEF_MACLASS
    #include <stdio.h>
    #include "windows.h"
    #include "main.h"
    #include <iostream>
    #include <string>
    #include <QtGui/QApplication>
    #include <QtGui>
     
    class MaClass : public QWidget
    {
        Q_OBJECT
     
    	public :
    	MaClass();
     
    	public slots :
    	void click_boutton();
     
     
    	private :
    		MaFenetre btn_test;
    };
     
    #endif
    MaClass.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include "MaClass.h"
     
    using namespace std;
     
    void MaClass::click_boutton()
    {
    	HWND hBlocNotes = FindWindow(TEXT("blocnotes"), NULL);
    	HWND tool = FindWindow(TEXT("MyProject"), NULL);
    	Sleep(1000);
    }
    Par contre sa je comprends pas :
    en fin dans MaFenetre.cpp tu appelles le constructeur de MaClass dans lequel tu connectes btn_test qui est de type MaFenetre comme s'il était un QPushButton*:
    Citation:
    Envoyé par thebarbarius
    MaFenetre::MaFenetre() : QWidget()
    {

    btn_test = new QPushButton("test");

    }
    MaClass::MaClass() : QWidget() {
    QObject::connect(btn_test, SIGNAL(clicked()), this, SLOT(click_boutton()));
    }
    Comment faudrai faire pour que je puiss appliquer ce que je souhaite faire ?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Par défaut
    le message d'erreur que tu as posté est très clair:
    Citation Envoyé par thebarbarius
    \MaFenetre.cpp(123): error C2664: 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)'*: impossible de convertir le paramètre 1 de 'MaFenetre' en 'const QObject *'
    1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé

Discussions similaires

  1. Réponses: 11
    Dernier message: 08/03/2013, 17h50
  2. Séparer les liens des sous-menus
    Par Marie08 dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2011, 16h14
  3. Séparer les actions des divs identiques
    Par Boris56 dans le forum jQuery
    Réponses: 10
    Dernier message: 26/07/2010, 14h30
  4. GUI: séparer les objects des callback
    Par soeursourire dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 01/04/2010, 09h23
  5. séparer les centaines des milliers dans un double
    Par celiaaa dans le forum Access
    Réponses: 5
    Dernier message: 13/12/2006, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo