我创建了一个 POST 请求并连接到完成的() http://qt-project.org/doc/qt-5.0/qtnetwork/qnetworkreply.html#finished signal:
QNetworkReply *reply = manager->post(request, postData.encodedQuery());
connect(reply, SIGNAL(finished()), this, SLOT(accept()));
我希望在 POST 请求完成时收到通知,无论它是失败还是成功。
我在文档中注意到还有一个QNetworkReply::错误() http://qt-project.org/doc/qt-5.0/qtnetwork/qnetworkreply.html#error-2信号,我也需要连接到它吗?finished()
在所有情况下都被调用?
Qt 文档指出:
void QNetworkReply::error(QNetworkReply::NetworkError 代码) [信号]
当回复检测到处理错误时,会发出此信号。
Finished() 信号可能会随之而来,表明
连接结束。
从我在 Qt 源代码中看到的(最近正在检查完全相同的问题),在 error() 之后的任何地方,都有一个 finish() 调用。在5.1.0中我还没有发现error后面没有finished()的地方
例如
void QNetworkReplyImpl::close()
{
Q_D(QNetworkReplyImpl);
if (d->state == QNetworkReplyImplPrivate::Aborted ||
d->state == QNetworkReplyImplPrivate::Finished)
return;
// stop the download
if (d->backend)
d->backend->closeDownstreamChannel();
if (d->copyDevice)
disconnect(d->copyDevice, 0, this, 0);
QNetworkReply::close();
// call finished which will emit signals
d->error(OperationCanceledError, tr("Operation canceled"));
d->finished();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)