1

我有一个简单的类网络

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()));
}

在文件network.h中正确定义了回复

private:
 QNetworkAccessManager *httpclient;
 QNetworkReply *reply;

没有改变!但是,如果我在 get-Request 之后访问reply->bytesAvailable(),所有信号都会同时发出!我现在正在搜索几个小时,但不知道我做错了什么。

4

1 回答 1

1

所以......我发现了原因 - 但不完全是:它是内存管理。我必须在我的主窗口类中将我的对象定义为指针

Networking *nw;

现在我可以使用它了——例如在我的按钮操作中:

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

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

于 2010-02-09T14:33:13.033 回答