Qt permet de relier facilement entre elle des classes héritant de QObject avec des liens signaux / slots. Voici un petit exemple de connexion.
class OtherQObject : public QObject { Q_OBJECT public: OtherQObject(); signal: void aSuperSignal(); };
class MyQObject : public QObject { Q_OBJECT public: MyQObject(); public slots: void myGreatMethod(); };
MyQObject *myClass; OtherQObject *otherClass; connect(otherClass, SIGNAL(aSuperSignal()), myClass, SLOT(myGreatMethod());
A de nombreuses reprises, il m’est arrivé d’être confronté à l’erreur suivante (ou similaire) : « No matching function for call to connect ». Plus précisément :
error: no matching function for call to ‘mainWindow::connect(MyQObject *&, const char [38], OtherQObject *&, const char [30])’ note: candidates are: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType) note: bool QObject::connect(const QObject*, const char*, const char*, Qt::Connection
J’aimerai lister ici quelques causes possibles de ce type d’erreur. Un article sans fioriture, avec l’information brute de chez brute, mais qui sait, peut-être aurais-je un jour l’envi de peaufiner un petit peu ce bric à brac ?