我创建了一个 POST 请求并连接到 finished()信号:
QNetworkReply *reply = manager->post(request, postData.encodedQuery());
connect(reply, SIGNAL(finished()), this, SLOT(accept()));
我希望在 POST 请求完成时收到通知,无论它是失败还是成功。
我在文档中注意到还有一个 QNetworkReply::error() signal,我是否也需要连接到它,或者在所有情况下都会调用 finished()
吗?
最佳答案
Qt 文档指出:
void QNetworkReply::error(QNetworkReply::NetworkError code) [signal]
This signal is emitted when the reply detects an error in processing. The finished() signal will probably follow, indicating that the connection is over.
从我在 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();
}
关于c++ - 我也应该连接到 QNetworkReply::error() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18404483/