J'essaye d'écrire une application en utilisant QNetworkManager. J'ai simplifié le code au problème. Le code suivant se bloque, et je ne sais pas pourquoi:Qt4 QNetworkManager se bloque
main.cpp:
#include <QApplication>
#include "post.h"
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
post("http://google.com/search", "q=test");
return app.exec();
}
post.h:
#ifndef _H_POST
#define _H_POST
#include <QNetworkAccessManager>
#include <QNetworkRequest>
class post : public QObject {
Q_OBJECT
public:
post(QString URL, QString data);
public slots:
void postFinished(QNetworkReply* reply);
protected:
QNetworkAccessManager *connection;
};
#endif
post.cpp:
#include <QApplication>
#include <QUrl>
#include "post.h"
post::post(QString URL, QString data) {
connection = new QNetworkAccessManager(this);
connect(connection, SIGNAL(finished(QNetworkReply*)), this, SLOT(postFinished(QNetworkReply*)));
connection->post(QNetworkRequest(QUrl(URL)), data.toAscii());
}
void post::postFinished(QNetworkReply*) {
qApp->exit(0);
}
Certains Googling montre que c'est peut-être parce que j'ai tout sur un thread, mais je n'ai aucune idée de comment changer cela dans Qt ... aucun des exemples de réseau sh ow ça.
Est-ce qu'il se bloque dans connect-> post ou dans app.exec? –
app.exec il semble que post :: postFinished ne soit jamais appelé – singpolyma
Quelle version de Qt courez-vous? –