c++ - 我也应该连接到 QNetworkReply::error() 吗?

标签 c++ qt qtnetwork

我创建了一个 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/

相关文章:

qt - 无法在 Qt 中链接 qwt

c++ - 将图片从在线保存到本地存储qt 5.1

Qt OpenSSL 问题 - 在某些计算机上被阻止(?)

c++ - 在 C++ 中使用 for 循环的系列总和

C++ & WinApi - 在创建的窗口中从键盘到屏幕的文本输出

python - QWidget showFullScreen 产生多个resizeEvents

c++ - 构建 Qt 5.3 时出错

c++ - 调用std::thread::join()之后发生了什么?

c++ - 菱形继承(钻石问题) - 从抽象类和具体类继承而不是实现基于共享的类

c++ - 为什么客户端无法连接到服务器? Qt