0

これは私の最初の投稿であり、Qt にはかなり慣れていません。

Web ページをロードするために Qwebkit を使用していますが、Web から一部のリソースを完全にロードしないことに関心があります。具体的には、jpg のバイナリ データ (HTML タグではない) 内から画像データではなく、jpg ファイルのサイズのみを取得しようとしています。そのために、QNAM の createRequest メソッドを次のように再実装しました。

QNetworkReply *NetworkAccessManager::createRequest(Operation op,const QNetworkRequest & req,QIODevice * outgoingData )
{


    if (req.url().path().endsWith("jpg"))
    {
        CustomReply *reply = new CustomReply(QNetworkAccessManager::createRequest(op, req, outgoingData));
        return reply->getQNR();
    }else{
        return QNetworkAccessManager::createRequest(op, req, outgoingData);
    }
}

次に、CustomReply クラスに信号を接続して、受信データを QByteArray に追加し、QByteArray を処理して、探しているマーカーがあるかどうかを確認します。ここで、どうすればよいかわかりません。この後にやりたいことは、(これ以上ダウンロードしないように) 接続を閉じて、CustomReply::getQNR() で受け取ったデータを返信に渡すことです。保存した QByteArray に返信の内容を設定する関数を実装する必要があります。これを読みましが、問題を解決できませんでした。

前もって感謝します。

4

2 に答える 2

0

ここで説明したようにして、問題を解決しました。オフセットが抜けていたので、 readData() が呼ばれるたびに最初からデータが読み込まれていました。接続を閉じるために、CustomReply の終了信号を元の QNReply に接続します。十分なデータが得られたら、終了信号を発行して接続を閉じます。abort または close を呼び出すと、エラー 5 が発生します (ただし、エラーを処理することはできますが、シグナルを操作する方が少しクールだと思います)。

皆さん、ありがとうございます。

于 2012-08-15T05:43:13.380 に答える
0

私はあなたの質問について100%明確ではありませんが、受け取った返信の値を別のQByteArrayに返そうとしている場合は、完了時に起動されるか、呼び出されemitてその方法で値を渡す追加のシグナルを設定するだけです.

于 2012-08-13T13:59:31.170 に答える