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

Qt Discussion :

Erreur de compilation


Sujet :

Qt

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Erreur de compilation
    Bonjour forum,
    je suis entrain de compiler un code qui teste l appuie d'un key et qui fait un appel periodique d'une fonction compte() mais la compilation me donne une erreur que j arrive pas à la resoudre.
    clavier.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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #ifndef CLAV_H
    #define CLAV_H
    #include <QtGui>
    #include <QtGui>
    #include <QtCore>
    void go();
    int i=0;
    void f(int x,QKeyEvent *event);
    //void compte();
    class MyTest : public QWidget
    {
        Q_OBJECT;
        public:
            MyTest (  QWidget * parent = 0, Qt::WindowFlags f = 0  ) : QWidget  (parent,f )
                {
     
                };
     
        protected:
            QTimer *timer;
            void keyPressEvent(QKeyEvent *event)
                {
                    //qDebug()<<event->text();
                    int k = event->key();
                    f(k,event);
                };
        public slots:
                void compte();
     
        public:
                void go()
                    {
                        timer = new QTimer(this);
                        connect(timer, SIGNAL(timeout()), this, SLOT(compte()));
                        timer->start(1000);
                    };
     
    };
     
    void MyTest::compte()
        {
     
            do
                qDebug()<< i++;
     
                while (i<11);
        };
    void f(int x,QKeyEvent *event)
    {
        if (x==Qt::Key_M)   qDebug()<< '2';
        event->accept();
     
    };
    #endif
    main.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include "clav.h"
    MyTest *window1;
    int main(int argc, char** argv)
    {
    	QApplication app(argc, argv);
         window1= new MyTest();
     
        window1->go();
        window1-> resize(200,200);
    	window1->show();
    	return app.exec();
    }
    et pour l erreur :
    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
    C:\Documents and Settings\AISEIR\Mes documents\clavier>make
    mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory `C:/Documents and Settings/AISEIR/Mes docume
    nts/clavier'
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
    DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"..\..\..\..\Qt\2009.01
    \qt\include\QtCore" -I"..\..\..\..\Qt\2009.01\qt\include\QtGui" -I"..\..\..\..\Q
    t\2009.01\qt\include" -I"." -I"..\..\..\..\Qt\2009.01\qt\include\ActiveQt" -I"de
    bug" -I"." -I"..\..\..\..\Qt\2009.01\qt\mkspecs\win32-g++" -o debug\main.o main.
    cpp
    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
    oc -Wl,-subsystem,console -mthreads -Wl -o debug\clavier.exe debug/main.o  -L"c:
    \Qt\2009.01\qt\lib" -lQtGuid4 -lQtCored4
    debug/main.o: In function `ZN6QFlagsIN2Qt10WindowTypeEEC1ERKS2_':
    C:/Documents and Settings/AISEIR/Mes documents/clavier/clav.h:(.text$_ZN6MyTestC
    1EP7QWidget6QFlagsIN2Qt10WindowTypeEE[MyTest::MyTest(QWidget*, QFlags<Qt::Window
    Type>)]+0x38): undefined reference to `vtable for MyTest'
    C:/Documents and Settings/AISEIR/Mes documents/clavier/clav.h:(.text$_ZN6MyTestC
    1EP7QWidget6QFlagsIN2Qt10WindowTypeEE[MyTest::MyTest(QWidget*, QFlags<Qt::Window
    Type>)]+0x44): undefined reference to `vtable for MyTest'
    collect2: ld returned 1 exit status
    mingw32-make[1]: *** [debug\clavier.exe] Error 1
    mingw32-make[1]: Leaving directory `C:/Documents and Settings/AISEIR/Mes documen
    ts/clavier'
    mingw32-make: *** [debug] Error 2

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Q_OBJECT
    je pense que le probleme c'est au niveau de Q_OBJECT lorsque j l ai mis en commentaire programme passe mais le slot n'est pas creer. je ne vois pas la solution

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Dans ton Makefile, est-ce que les fichiers avec QOBJECT passent bien par le moc ? (Si tu utilises qmake, normalement oui, mais relance-le une fois, il peut se tromper).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    merci dourouc pour ton reponse
    j ai regle le probleme il faut juste decouper les fichiers correctement pour qmake reconnait le fichier .h et il ne faut pas faire des implementation hors d'une classe dans un fichier .h donc soit il faut ajouter un fichier .cpp ou bien faire les implementation au sein de mon classe qui se trouve dans mon fichier .h

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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