質問

QNetworkAccessManager :: getを使用してファイルをダウンロードしていますが、QHttp :: getとは異なり、別のQIODeviceに応答を直接書き込む組み込みの方法はありません。

最も簡単な方法は次のようなことです:

QIODevice* device;

QNetworkReply* reply = manager.get(url);
connect(reply, SIGNAL(readyRead()), this, SLOT(newData()));

そしてnewDataスロット:

device->write(reply->readAll());

しかし、これが正しい方法であるかどうかはわかりませんが、何かを見逃したかもしれません。

役に立ちましたか?

解決

それは正しいようです。エラー処理を適切にサポートしていない QByteArray 形式ではなく、 read()および write()の下位レベルの形式を使用します。 、それ以外は問題ありません。

問題がありますか?

他のヒント

終了したシグナルを使用して、ダウンロードプロセスの最後にすべてのコンテンツを読み取ってください。例(イベントループを削除し、新しいスロットを使用して非同期にする):

    QNetworkAccessManager manager;
    QEventLoop loop;
    QNetworkReply *reply = manager.get( request );
    QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));

    loop.exec();

    QFile file( "YOUR FILE" );
    file.open(QIODevice::WriteOnly);
    file.write(reply->readAll());

    delete reply;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top