我正在使用qt 5.3。

我在QIODevice中写了一件大事供阅读。我想要一个代理来获取数据,同时将数据保留在QIODevice中以供其他读取。因此,如果我调用readAll(),它将在代理中获得所有良好的结果,但其他读取器无法获得任何数据。

我想我应该使用peek(),但这似乎需要一个maxsize。我尝试传递size()或bytesAvailable(),但它们没有让我获得实际的大小。它们返回的缓冲区大小可能有些奇怪,如3287。但是我的数据却多达1081530字节。

如何获得QIODevice的真实大小以进行读取?

编辑:我上面提到的QIODevice实际上是QNetworkReply。我想创建一个代理,以使用QWebView观察程序的请求和响应数据,以访问某些Flash游戏。我实现了QNetworkAccessManager子类的createRequest,我想分析的是通过createRequest的finish()信号捕获的。

Edit2:我注意到此QIODevice是一个顺序的QIODevice,因此大小未知。但是如何在不清除数据的情况下读取数据?

最佳答案

您可以使用QIODevice::seek,然后再次读取数据
来自seek文档:

09-06 20:36