信号不会被发射

时间:2010-02-09 12:32:28

标签: qt qnetworkaccessmanager

我有一个简单的类网络,其中包含:

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(),则会同时发出所有信号!我现在正在寻找几个小时,但不知道我做错了什么。

1 个答案:

答案 0 :(得分:1)

所以...我发现了原因 - 但不完全是:它是内存管理。 我必须在主窗口类

中将我的对象定义为指针
Networking *nw;

现在我可以使用它 - 例如在我的按钮动作中:

nw = new Networking();
nw->getPage("my url here");

一切都按预期进行了! Ufff ..很多东西要学习