2

ユーザーがすべてのアップロードをキャンセルできるアプリケーションに取り組んでいます。ここで、QNAM からのすべての応答を追跡する必要があるのか​​、それとも単に削除して、すべてが中止されることを期待する必要があるのだろうか?

ドキュメントには中止について何も記載されていませんが、そうなると思います。

QNetworkAccessManager オブジェクトを破棄し、すべてのリソースを解放します。このクラスから返される QNetworkReply オブジェクトには、このオブジェクトが親として設定されていることに注意してください。つまり、それらに対して QObject::setParent() を呼び出さないと、オブジェクトとともに削除されます。

編集:最終的に、デストラクタでQNetworkReplysシグナルを切断するだけでなく、それを中止するすべての返信にラッパーを使用することになりました(これも所有権を取得し、再試行などを行います)。ラッパーと一緒に削除されます(親->子)

4

1 に答える 1

3

返信を削除するだけです。ソースから:

QNetworkAccessManager::~QNetworkAccessManager()
{
    // ...

    qDeleteAll(findChildren<QNetworkReply *>());

    // ...
}

また、QNetworkReply のデストラクタは空であるため、手動で中止する必要があります。

于 2012-04-27T01:25:00.963 に答える