我使用 QWebPage 下载网页及其所有资源。同时,我想掌握Qt在此过程中下载的原始数据。通过从 QNetworkReply 中的 void QNetworkAccessManager::finished(QNetworkReply * reply) 读取数据来执行此操作
signal不是一个好的解决方案,因为QWebPage本身已经可以读取数据。这是因为



根据QNetworkReplydetailed description

但是,可以将QWebPage配置为使用带有覆盖的QNetworkAccessManager方法的自定义 createRequest

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

我认为正确的解决方案是为QNetworkReply创建一个代理,并在createRequest方法中将其返回。该代理应允许从答复中读取数据,就像原始QNetworkReply一样(以便QWebPage可以从中读取数据),但与此同时,此代理应允许QWebPage读取其他对象后再读取数据。换句话说,我们需要tee作为QNetworkReplyIODevice基类。

如何编写此代理?

最佳答案

好像有人已经想要相同的东西,并写了a proxy for the QNetworkReply

关于qt - 如何从QWebPage正在使用的QNetworkReply中读取数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4475647/

10-11 15:59