Partage
  • Partager sur Facebook
  • Partager sur Twitter

Qt probléme de slots "fait maison"

Sujet résolu
Anonyme
    3 mars 2008 à 22:12:30

    Bonjour j'ai un petit probléme

    Voila j'ai coder un slots et depuis j'ai un probléme a la compilation.

    1. #ifndef DEF_MAFENETRE
    2. #define DEF_MAFENETRE
    3. #include <QApplication>
    4. #include <QWidget>
    5. #include <QPushButton>
    6. #include <QProgressBar>
    7. #include <QSlider>
    8. #include <QObject>
    9. class MaFenetre : public QWidget // On hérite de QWidget (IMPORTANT)
    10. {
    11.         Q_OBJECT
    12.         public:
    13.                 MaFenetre();
    14.                 MaFenetre(int w, int h);
    15.         public slots:
    16.                 void changeSliderValue(void);
    17.         private:
    18.                 void boutonConstruction(void);
    19.                 void sliderConstruction(void);
    20.                 void progressbarConstruction(void);
    21.                 QPushButton *m_bouton;
    22.                 QProgressBar *m_progressbar;
    23.                 QSlider *m_slider;
    24. };
    25. #endif//end DEF_MAFENETRE


    1. #include "MaFenetre.h"
    2. MaFenetre::MaFenetre() : QWidget()
    3. {
    4.         setFixedSize(300, 150);
    5.         boutonConstruction();
    6. }
    7. MaFenetre::MaFenetre(int w, int h) : QWidget()
    8. {
    9.         setFixedSize(w, h);
    10.         boutonConstruction();
    11.         sliderConstruction();
    12.         progressbarConstruction();
    13.         QObject::connect(m_bouton, SIGNAL(clicked()), this, SLOT(changeSliderValue()));
    14.         QObject::connect(m_slider, SIGNAL(valueChanged(int)), m_progressbar, SLOT(setValue(int)));
    15.         QObject::connect(m_bouton, SIGNAL(clicked()), m_progressbar, SLOT(reset()));
    16. }
    17. void MaFenetre::boutonConstruction(void)
    18. {
    19.           // Construction du bouton
    20.         m_bouton = new QPushButton("Reset", this);
    21.         m_bouton->setFont(QFont("Comic Sans MS", 14));
    22.         m_bouton->setCursor(Qt::PointingHandCursor);
    23.         m_bouton->setIcon(QIcon("smiley.png"));
    24.         m_bouton->move(310, 340);
    25. }
    26. void MaFenetre::sliderConstruction(void)
    27. {
    28.         m_slider = new QSlider(Qt::Horizontal,this);
    29.         m_slider->setGeometry(30, 300, 300, 20);
    30. }
    31. void MaFenetre::progressbarConstruction(void)
    32. {
    33.         m_progressbar = new QProgressBar(this);
    34.         m_progressbar->setGeometry(30, 260, 300, 20);
    35. }
    36. void MaFenetre::changeSliderValue(void)
    37. {
    38.         m_slider->setValue(0);
    39. }


    et le main.
    1. #include <QApplication>
    2. #include "MaFenetre.h"
    3. int main(int argc, char *argv[])
    4. {
    5.         QApplication app(argc, argv);
    6.         MaFenetre fenetre(400, 400);
    7.         fenetre.show();
    8.         return app.exec();
    9. }


    et enfin l'erreur renvoyé par le compilateur.

    1. prsieux@prsieux-laptop:~/test_qt$ make
    2. g++ -c -pipe -fpermissive -g -Wall -W -D_REENTRANT -DQT_SHARED -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o MaFenetre.o MaFenetre.cpp
    3. g++ -Wl,--no-undefined -o test_qt MaFenetre.o main.o    -L/usr/lib -lQtGui -lQtCore -lpthread
    4. MaFenetre.o: In function `MaFenetre':
    5. /home/prsieux/test_qt/MaFenetre.cpp:9: undefined reference to `vtable for MaFenetre'
    6. /home/prsieux/test_qt/MaFenetre.cpp:9: undefined reference to `vtable for MaFenetre'
    7. /home/prsieux/test_qt/MaFenetre.cpp:9: undefined reference to `vtable for MaFenetre'
    8. /home/prsieux/test_qt/MaFenetre.cpp:9: undefined reference to `vtable for MaFenetre'
    9. /home/prsieux/test_qt/MaFenetre.cpp:3: undefined reference to `vtable for MaFenetre'
    10. MaFenetre.o:/home/prsieux/test_qt/MaFenetre.cpp:3: more undefined references to `vtable for MaFenetre' follow
    11. collect2: ld a retourné 1 code d'état d'exécution
    12. make: *** [test_qt] Erreur 1
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      3 mars 2008 à 22:19:29

      Merci j'ai trouvé en relisant le cours
      • Partager sur Facebook
      • Partager sur Twitter

      Qt probléme de slots "fait maison"

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown