不会发出信号
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.. 很多东西要学
【讨论】:
以上是关于不会发出信号的主要内容,如果未能解决你的问题,请参考以下文章
在发布模式下编译时不会发出 QNetworkAccessManager 完成信号(VS 2005)