Bonjour à tous,
je débute avec Qt et donc pour l'instant je teste des exemples.
j'ai trouvé la définition de la classe Counter ci après :
Je précise que j'utilise le plugin eclipse Qt et Qt 4.4.3.
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 <QObject> class Counter : public QObject { Q_OBJECT public: Counter() { m_value = 0; } int value() const { return m_value; } public slots: void setValue(int value); signals: void valueChanged(int newValue); private: int m_value; };
J'ai donc déclaré cette en deux partie, un fichier d'en-tête Counter.h,
==============>
et un fichier .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 #ifndef COUNTER_H_ #define COUNTER_H_ #include <QObject> class Counter { Q_OBJECT public: Counter(); int value() const; public slots: void setValue(int value); signals: void valueChanged(int value); private: int m_value; }; #endif /* COUNTER_H_ */
======================>
Alors, le problème, c'est que j'ai l'erreur suivante :
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 #include "Counter.h" Counter::Counter2() { } int Counter::value() const { return m_value; } void Counter::setValue(int value) { if (m_value != value) { m_value = value; emit valueChanged(value); } } void Counter::valueChanged(int value) { /// }
le code de la fonction principale (main) est le suivant qui se trouve dans un fichier "test.cpp" est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 mingw32-make debug mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory `C:/Users/laurykarin/Documents/eclipse-cpp-ganymede-SR1-win32/workspace/Test' g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\Qt\4.4.3\include\QtCore" -I"c:\Qt\4.4.3\include\QtCore" -I"c:\Qt\4.4.3\include\QtGui" -I"c:\Qt\4.4.3\include\QtGui" -I"c:\Qt\4.4.3\include" -I"c:\Qt\4.4.3\include\ActiveQt" -I"debug" -I"." -I"c:\Qt\4.4.3\mkspecs\win32-g++" -o debug\main.o main.cpp main.cpp: In function `int qMain(int, char**)': main.cpp:21: error: no matching function for call to `QObject::connect(Counter2*, const char[19], Counter2*, const char[15])' c:/Qt/4.4.3/include/QtCore/../../src/corelib/kernel/qobject.h:197: note: candidates are: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType) c:/Qt/4.4.3/include/QtCore/../../src/corelib/kernel/qobject.h:303: note: bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const mingw32-make[1]: *** [debug/main.o] Error 1 mingw32-make[1]: Leaving directory `C:/Users/laurykarin/Documents/eclipse-cpp-ganymede-SR1-win32/workspace/Test' mingw32-make: *** [debug] Error 2
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 "test.h" #include "Counter.h" #include <QApplication> #include <QObject> int main(int argc, char *argv[]) { QApplication app(argc, argv); Counter a, b; QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int))); a.setValue(12); b.setValue(45); app.exec(); }
Merci pour votre aide.
PS : l'exemple est à la page suivante : http://qt.developpez.com/doc/4.4/signalsandslots/
Partager