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 :

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;
 };
Je précise que j'utilise le plugin eclipse Qt et Qt 4.4.3.

J'ai donc déclaré cette en deux partie, un fichier d'en-tête Counter.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
 
 
#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_ */
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
 
 
#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)
{
 ///
}
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
 
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
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
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/