我有一个简单的类网络,其中包含:
private:
QNetworkAccessManager *httpclient;
我在构造函数中创建了一个对象并连接信号和插槽:
httpclient = new QNetworkAccessManager(this);
connect(httpclient, SIGNAL(finished(QNetworkReply*)), this, SLOT(httpRequestFinished(QNetworkReply*)));
现在我将通过公共方法getPage调用QNetworkAccessManager的get方法:
void Networking::getPage(const QString &uri)
{
QNetworkRequest request;
request.setUrl(uri);
httpclient->get(request);
}
我希望调用 httpRequestFinished ,但事实并非如此。 我也尝试过这个用于测试目的:
void Networking::getPage(const QString &uri)
{
QNetworkRequest request;
request.setUrl(uri);
reply = httpclient->get(request);
connect(reply, SIGNAL(finished()), this, SLOT(httpReplyFinished()));
}
回复在文件 networking.h 中正确定义:
private:
QNetworkAccessManager *httpclient;
QNetworkReply *reply;
没有改变!但是如果我在get-Request之后访问 reply-> bytesAvailable(),则会同时发出所有信号!我现在正在寻找几个小时,但不知道我做错了什么。
答案 0 :(得分:1)
所以...我发现了原因 - 但不完全是:它是内存管理。 我必须在主窗口类
中将我的对象定义为指针Networking *nw;
现在我可以使用它 - 例如在我的按钮动作中:
nw = new Networking();
nw->getPage("my url here");
一切都按预期进行了! Ufff ..很多东西要学习