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 :

Problème avec les classes

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 Problème avec les classes
    En suivant plusieurs tutoriel sur le C++, j'en suis arrivé aux classes.
    Le probleme c'est que sa ne marche pas encore une fois !
    J'essaie de faire des classe pour les slots.

    Petite precision, quand je commente //#include "MaClass.h" dans main.cpp sa remarche normalement.

    Alors voici mes fichiers :

    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.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
    22
     
    #include "MaFenetre.h"
    #include <stdio.h>
    #include "windows.h"
    #include <iostream>
    #include "MaClass.h"
     
    MaFenetre::MaFenetre() : QWidget()
    {
    //La groupbox principal rataché a la fenetre principale
    groupBoxPrincipal = new QGroupBox("GroupBox 1");
    layout1 = new QVBoxLayout();
    groupBoxPrincipal->setLayout(layout1);
     
    //La 2nd group box contenu dans la group box principal
    groupBox2 = new QGroupBox("GroupBox 2");
    layout1->addWidget(groupBox2 );
     
    //La 3ieme gropBox contenu dans la group box principal
    groupBox3 = new QGroupBox("GroupBox 3");
    layout1->addWidget(groupBox3);
    }
    maclass.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include "MaClass.h"
     
    using namespace std;
     
    void MaClass::Test()
    {
    	HWND hBlocNotes = FindWindow(TEXT("blocnotes"), NULL);
    	HWND tool = FindWindow(TEXT("BlocNotes"), NULL);
    	Sleep(1000);
    	PostMessage(hBlocNotes, WM_KEYDOWN, VK_ENTER, 0);
    }
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    #ifndef DEF_MAFENETRE
    #define DEF_MAFENETRE
     
    #include <QtGui/QApplication>
    #include <QtGui/QGroupBox>
    #include <QtGui/QPushButton>
    #include <QtGui/QWidget>
    #include <QtGui/QTabWidget>
    #include <QtGui/QLabel>
    #include <QtGui/QGridLayout>
    #include <QtGui/QVBoxLayout>
     
    class MaFenetre : public QWidget
    {
        Q_OBJECT
     
        public:
        MaFenetre();
     
        public slots:
        void AppuyerBouton();
     
        private :
    	//layout
    		QGroupBox *groupBoxPrincipal;
    		QGroupBox *groupBox1;
    		QGroupBox *groupBox2;
    		QGroupBox *groupBox3;
    		QVBoxLayout *layout1;
    		QVBoxLayout *layout2;
    		QVBoxLayout *layout3;
    };
     
    #endif
    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
     
    #ifndef DEF_MACLASS
    #define DEF_MACLASS
    #include <stdio.h>
    #include "windows.h"
    #include <iostream>
    #include <string>
     
    class MaClass
    {
    	public :
    	void Test();
     
    	private :
    }
     
    #endif

    Le fameux message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    1>.\MaFenetre.cpp(34): error C2533: 'MaFenetre::{ctor}'*: type de retour non autorisé pour les constructeurs

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonsoir

    Sans vouloir critiquer, tu donnes l'impression de ne pas savoir ce que tu fais et de copier/coller du code en espérant que ça marche. Tu devrais prendre un cours de C++ (comme te l'as déjà conseillé dourouc05) et d'apprendre les bases.

  3. #3
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Le truc c'est que j'ai fais exactement ce qu'il y a dans le tuto, et sa ne marche.

    J'aimerai comprendre pourquoi sa ne marche pas.

    sa semble apparemment rentrer avec mon classe mafenetre.

    Après avoir verifié, je me suis rendu compte que j'ai oublié le constructeur, et un ";".

    Ce qui donne :
    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_MACLASS
    #define DEF_MACLASS
    #include <stdio.h>
    #include "windows.h"
    #include <iostream>
    #include <string>
     
    class MaClass
    {
    	public :
            MaClass(); // constructeur
    	void Test();
     
    	private :
    };
     
    #endif
    La le code ne plante pas.

  4. #4
    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
    C'est vrai que l'erreur est assez explicite, on voit tout de suite que y'a quelque chose de mal tapé.

  5. #5
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut Problème de classe
    Bonjours j'essaye un peut de separer le contenu, de bien faire les entetes ...etc

    Donc mon objectif est de creer une classe pour le layout de la fenetre, et une deuxieme classe pour les actions sur les boutton (slots).

    Alors voici mes fichiers :

    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.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
    22
    23
    24
    25
    26
    27
     
    #include "MaFenetre.h"
    #include <stdio.h>
    #include "windows.h"
    #include <iostream>
    #include "MaClass.h"
     
    MaFenetre::MaFenetre() : QWidget()
    {
    //La groupbox principal rataché a la fenetre principale
    groupBoxPrincipal = new QGroupBox("GroupBox 1");
    layout1 = new QVBoxLayout();
    groupBoxPrincipal->setLayout(layout1);
     
    //La 2nd group box contenu dans la group box principal
    groupBox2 = new QGroupBox("GroupBox 2");
    layout1->addWidget(groupBox2 );
     
    //La 3ieme gropBox contenu dans la group box principal
    groupBox3 = new QGroupBox("GroupBox 3");
    layout1->addWidget(groupBox3);
    }
     
    MaClass::MaClass()  : QWidget() 
    {
    QObject::connect(btn_test, SIGNAL(clicked()), this, SLOT(Click_boutton()));
    }
    maclass.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include "MaClass.h"
     
    using namespace std;
     
    void MaClass::Click_Bouton()
    {
    	HWND hBlocNotes = FindWindow(TEXT("blocnotes"), NULL);
    	HWND tool = FindWindow(TEXT("BlocNotes"), NULL);
    	Sleep(1000);
    	PostMessage(hBlocNotes, WM_KEYDOWN, VK_ENTER, 0);
    }
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #ifndef DEF_MAFENETRE
    #define DEF_MAFENETRE
     
    #include <QtGui/QApplication>
    #include <QtGui/QGroupBox>
    #include <QtGui/QPushButton>
    #include <QtGui/QWidget>
    #include <QtGui/QTabWidget>
    #include <QtGui/QLabel>
    #include <QtGui/QGridLayout>
    #include <QtGui/QVBoxLayout>
     
    class MaFenetre : public QWidget
    {
        Q_OBJECT
     
        public:
        MaFenetre();
     
        private :
    	//layout
    		QGroupBox *groupBoxPrincipal;
    		QGroupBox *groupBox1;
    		QGroupBox *groupBox2;
    		QGroupBox *groupBox3;
    		QVBoxLayout *layout1;
    		QVBoxLayout *layout2;
    		QVBoxLayout *layout3;
    };
     
    #endif
    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
     
    #ifndef DEF_MACLASS
    #define DEF_MACLASS
    #include <stdio.h>
    #include "windows.h"
    #include <iostream>
    #include <string>
     
    class MaClass : public QWidget
    {
        Q_OBJECT
     
    	public :
    	MaClass(); // constructeur
     
            public slots :
    	void Click_boutton();
     
    	private :
            MaFenetre bnt_test; // on recupere les parametres du boutton
    };
     
    #endif

    Le fameux message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    1>.\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>  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
    1>  Génération de code en cours...
    1>NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\cl.EXE"'á: code retour '0x2'
    1>  Stop.
    1>NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\nmake.exe"'á: code retour '0x2'
    1>  Stop.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec les classes abstraite avec C#
    Par takfa2008 dans le forum C#
    Réponses: 1
    Dernier message: 29/06/2009, 10h25
  2. Problème avec les classes et les méthodes abstract
    Par BOLARD dans le forum Langage
    Réponses: 5
    Dernier message: 22/09/2007, 20h27
  3. Problème avec les classes HttpWebRequest et HttpWebResponse sous C#
    Par zouzoulikou dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 14/08/2007, 01h46
  4. Problème avec les classes
    Par 30barrett40 dans le forum C++
    Réponses: 6
    Dernier message: 28/03/2007, 14h04
  5. [POO] PHP5 : Problème avec les classes
    Par fleur_de_rose dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2006, 19h09

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