質問
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;
所属していません StackOverflow