QNetworkAccessManager 不发出信号
Posted
技术标签:
【中文标题】QNetworkAccessManager 不发出信号【英文标题】:QNetworkAccessManager does not emit signal 【发布时间】:2016-05-17 19:53:55 【问题描述】:所以我有这个代码:
QUrl url("http://...");
QNetworkRequest request(url);
QNetworkReply *reply = m_networkManager->get(request);
connect(reply, SIGNAL(finished()), SLOT(onRequestCompleted()));
connect(reply,SIGNAL(error(QNetworkReply::NetworkError)),SLOT(onError(QNetworkReply::NetworkError)));
我无法获得其他功能的信号
void IpResolver::onRequestCompleted()
QString webContent;
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
if (reply)
if (reply->error() == QNetworkReply::NoError)
QString webContent = reply->readAll();
我不知道解决办法,请帮忙。
【问题讨论】:
您的主题“QNetworkAccessManager 不起作用”是错误的。我已经多次使用该课程,虽然它确实存在一些问题,但说“它不起作用”是公然错误的。说“我不知道如何正确使用它”会更接近事实。 好的,我要重命名它 "Can't get signal to the other function" 你的意思是你的槽永远不会被调用? 是的,从不调用插槽 onRequestCompleted。 【参考方案1】:我不知道你到底想要什么,但是:
-
为什么你使用回复指针而不是某种
onRequestCompleted(QNetworkReply *reply)
?
如果你这样做:
QUrl url("http://...");
QNetworkRequest request(url);
connect(m_networkManager, &QNetworkAccessManager::finished, this, &IpResolver::onRequestCompleted);
m_networkManager->get(request);
您的位置将是,例如:
void IpResolver::onRequestCompleted(QNetworkReply *reply)
QString webContent;
if (reply->error() == QNetworkReply::NoError)
webContent = reply->readAll();
【讨论】:
起初,非常感谢您的帮助,但我尝试了您的版本,现在编译时抛出异常:抛出异常:读取访问冲突。这-> 是 0x555C3A43。如果有这个异常的处理程序,程序可以安全地继续。 您究竟在哪里发现了异常?什么调试模式告诉你? 执行m_networkManager->get(request);
时是否会抛出异常?如果你评论这一切都好吗?是First-chance exception at: The binding handle is invalid.
吗?
好的,你能找到代码中哪一行抛出这个异常吗?
在代码中它的这一行:connect(m_networkManager, &QNetworkAccessManager::finished, this, &IpResolver::onRequestCompleted);以上是关于QNetworkAccessManager 不发出信号的主要内容,如果未能解决你的问题,请参考以下文章
Qt QNetworkAccessManager 发出完成信号的长时间延迟
在发布模式下编译时不会发出 QNetworkAccessManager 完成信号(VS 2005)
QFtp或QNetworkaccessmanager因系统代理请求报错解决方案