我正在尝试使用QNetworkManager编写应用程序。我已经简化了代码,解决了这个问题。下面的代码挂起了,我不知道为什么:
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;
};
#endifpost.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);
}一些谷歌显示,这可能是因为我把所有的东西都放在一个线程上,但我不知道如何在Qt中改变这一点……没有一个网络示例显示了这一点。
发布于 2009-12-25 00:05:43
我只是尝试了一下,结果是一样的。问题是您只通过调用构造函数来创建post对象。因为您没有指定一个对象,所以它会立即被销毁(要检查这一点,请创建一个析构函数并查看它何时被调用)。
尝试:
post p("http://google.com/search","q=test");然后你的位置就会被调用。
https://stackoverflow.com/questions/1958799
复制相似问题