5

QWebPageWeb ページとそのすべてのリソースをダウンロードするために使用します。同時に、このプロセス中に Qt によってダウンロードされる生データを保持したいと思います。QNetworkReply信号からデータを読み取ることによってこれを行うことvoid QNetworkAccessManager::finished(QNetworkReply * reply) は、データ自体が既に読み取られている可能性があるため、良い解決策ではありませんQWebPage。それの訳は

QNetworkReply はシーケンシャル アクセスの QIODevice です。つまり、データがオブジェクトから読み取られると、デバイスによって保持されなくなります。

詳しい説明通りですQNetworkReply

ただし、オーバーライドされたメソッドでQWebPageカスタムを使用するように構成できますQNetworkAccessManagercreateRequest

QNetworkReply * QNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0 )

正しい解決策は、プロキシを作成してメソッドQNetworkReplyで返すことだと思います。createRequestこのプロキシは、元の場合と同様に、応答からデータを読み取ることができるようにする必要がありますQNetworkReply(そのため、QWebPageデータを読み取ることができます) QWebPage。言い換えれば、の基底クラスにはティーが必要です。QNetworkReplyIODevice

このプロキシの書き方

4

1 に答える 1

4

誰かがすでに同じことを望んでいて、 QNetworkReply のプロキシを書いているようです。

于 2011-01-01T19:10:45.990 に答える