Connexion avec un QObject personnalisé
Bonjour,
J'essaye de créer un petit updater. Actuellement, sa GUI se limite à un bouton. Je connecte le signal cliked() de ce bouton au signal lauchnUpdate() de ma classe updaterHandler. Un problème survient :
Citation:
.\src\main.cpp(15) : error C2665: 'QObject::connect': aucune des 2 surcharges n'a pu convertir tous les types d'arguments
a:\qt\4.5.2\include\qtcore\../../src/corelib/kernel/qobject.h(191): peut être 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)'
a:\qt\4.5.2\include\qtcore\../../src/corelib/kernel/qobject.h(203): ou 'bool QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const'
lors de la tentative de mise en correspondance de la liste des arguments '(QPushButton *, const char *, updaterHandler (__cdecl *)(void), const char *)'
J'utilise Visual Studio 2008 avec Qt 4.5.2, compilé à la main.
Voici mes sources.
Code:
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
| #include <QtGui/QApplication>
#include <QtGui/QPushButton>
#include <QObject>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtCore/QUrl>
#include <QtCore/QFile>
class updaterHandler : public QObject
{
Q_OBJECT
public:
updaterHandler(QObject * parent = 0);
~updaterHandler();
public slots:
void launchUpdate();
private:
QNetworkAccessManager manager;
QNetworkRequest request;
QUrl url;
QFile file;
QNetworkReply * reply;
};
#include "main.moc"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
updaterHandler handler();
QPushButton bouton("Mettre jour");
QObject::connect (& bouton , SIGNAL( pressed() ),
& handler, SLOT ( launchUpdate() ) );
bouton.show();
return a.exec();
} |
Si je déclare mon handler en tant que pointeur, et que j'enlève mon esperluette à la connexion, ça compile parfaitement. Par contre, la connexion plante misérablement à l'exécution...
Quelqu'un aurait-il une idée ? Merci d'avance !