QNetworkAccessManager 析构函数是否中止当前请求

Does the QNetworkAccessManager destructor abort the current requests?

本文关键字:请求 析构函数 是否 QNetworkAccessManager      更新时间:2023-10-16

在用户应该能够取消所有上传的应用程序上工作。现在我想知道我是否必须从 QNAM 中寻找所有回复,或者只是删除它并期望它们都中止?

文档中没有任何关于中止的内容,但我假设它会。

销毁 QNetworkAccessManager 对象并释放所有资源。请注意,从此类返回的 QNetworkReply 对象将此对象设置为其父对象,这意味着如果不对它们调用 QObject::setParent(),它们将随之删除。

编辑:最终为每个回复使用包装器(它也拥有它的所有权并进行重试等),这在其析构函数中既断开了 QNetworkReplys 信号的连接,又中止了它。它与包装器一起被删除(父>子)

它只会删除回复。从源头:

QNetworkAccessManager::~QNetworkAccessManager()
{
    // ...
    qDeleteAll(findChildren<QNetworkReply *>());
    // ...
}

QNetworkReply 的析构函数是空的,所以你需要手动中止它们。