0

这是我在这里的第一篇文章,我对 Qt 还很陌生。

我正在使用 Qwebkit 来加载网页,并且我对不完全从 web 加载一些资源感兴趣。具体来说,我试图只获取 jpg 文件的大小,而不是 jpg 二进制数据(不是 HTML 标记)中的图像数据。为此,我重新实现了 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

我对您的问题不是 100% 清楚,但是如果您尝试将收到的回复的值返回给另一个 QByteArray,只需设置一个附加信号,该信号在完成时触发或调用emit并通过这种方式传递值.

于 2012-08-13T13:59:31.170 回答
0

我按照这里的描述做了并解决了我的问题。我错过了偏移量,所以每次调用 readData() 时,都会从头开始读取数据。为了关闭连接,我将 CustomReply 的完成信号连接到原始 QNReply。当我获得足够的数据时,我会发出完成信号以关闭连接。调用 abort 或 close 将导致 ERROR 5(尽管您可以处理该错误,但我发现使用信号有点酷)。

谢谢大家。

于 2012-08-15T05:43:13.380 回答