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 :
J'utilise Visual Studio 2008 avec Qt 4.5.2, compilé à la main..\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 *)'
Voici mes sources.
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...
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
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(); }
Quelqu'un aurait-il une idée ? Merci d'avance !
Partager