不会发出信号

Posted

技术标签:

【中文标题】不会发出信号【英文标题】:Signals don't get emitted 【发布时间】:2010-02-09 12:32:28 【问题描述】:

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

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

reply 在文件 networking.h 中正确定义:

private:
 QNetworkAccessManager *httpclient;
 QNetworkReply *reply;

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

【问题讨论】:

【参考方案1】:

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

Networking *nw;

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

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

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

【讨论】:

以上是关于不会发出信号的主要内容,如果未能解决你的问题,请参考以下文章

PyQT 4 fnished() 信号不会发出[重复]

QTcpSocket 不会发出任何错误或连接信号

QThread 的started() 信号没有发出

在发布模式下编译时不会发出 QNetworkAccessManager 完成信号(VS 2005)

当我在 QPushbutton 的位置发送或发布 QMouseEvent 时,不会发出其 clicked() 信号

QtConcurrent::run 发出信号