QNetworkReply::error 信号何时会跟随finished() 信号?
Posted
技术标签:
【中文标题】QNetworkReply::error 信号何时会跟随finished() 信号?【英文标题】:When will QNetworkReply::error signal followed by a finished() signal? 【发布时间】:2016-05-25 15:04:48 【问题描述】:对于信号:
QNetworkReply::error(QNetworkReply::NetworkError code)
Qt的文档说:
当回复检测到处理错误时发出此信号。 完成()信号可能会跟随,表明 连接结束。
具体来说,finished() 信号什么时候发出,什么时候不发出?
【问题讨论】:
This 可能会回答您的问题。 【参考方案1】:QNetworkReply::error 信号何时会跟随finished() 信号? 具体来说,finished() 信号什么时候发出,什么时候发出 不是吗?
信号finished()
在由于数据传输完成或传输过程中的错误而完成请求时发出。信号error()
发生在finished()
之前,以防出现错误。在实践中,我们可以同时处理“错误”和“传输成功”的finished()
。
举例说明:
// connect 'finished' signal with consumer
connect(&s_networkAccessManager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(requestFinished(QNetworkReply*)));
void MyClass::requestFinished(QNetworkReply* pReply)
if ( pReply )
if (pReply->error() == QNetworkReply::NoError)
consumeData(pReply)
else
errorHandler(pReply->error(), pReply->errorString());
【讨论】:
谢谢。我担心的是,是否有可能“由于错误而实际上已经完成回复并且不会读入更多内容,但是没有发出finished()信号”? @Nyaruko 实际上我们对这样的处理程序感到满意。我们还连接 networkAccessManager.post() 返回的 QNetworkReply::sslErrors 信号。 就我而言,我只是通过普通 http 下载一些文件(其中一些可能很大,比如 100MB)。是否有必要担心 sslErrors?您使用的是什么版本的 Qt? 我们从 Qt 5.3 开始,现在是 Qt 5.5。当然,https 需要 sslErrors,并且主要发生在第一次发布或获取尝试期间。我们处理安全问题。 不仅https需要sslErrors。以上是关于QNetworkReply::error 信号何时会跟随finished() 信号?的主要内容,如果未能解决你的问题,请参考以下文章
PyQt4:如何/何时从 QTabWidget 的子类发出自定义信号?