0

QWebFrames我正在尝试在显示之前以一系列隐藏的方式预加载一些网页。但是,我发现setContenta 的方法QWebFrame会导致 GUI 变得无响应。

我尝试将实际的网络活动放在一个单独的线程中并将其提供给QWebFrameas a QByteArray,但这无济于事,让我相信是页面的绘制导致了 ~1.5 秒,非常明显减速。

QByteArray data = pReply->readAll();       //get the content from a QNetworkReply
this->page->mainFrame()->setContent(data); //this is the line that causes the problem

我完全被难住了,我不知道该尝试什么,因为我不能将整个 web 框架放在它自己的线程中。

有没有人遇到过这个并有任何建议?

更新 我分析了应用程序并确认 setContent 是问题的根源。

更新 2 我使用英特尔 VTune 分析了应用程序。我发现 QWebKit 确实占用了超过 100% 的 CPU 时间。QWebSettings::handle 用法突然出现在我身上,因为它似乎使用了最多的资源,我可以确认它正在占用主线程。

在此处输入图像描述

4

1 回答 1

0

不幸的是,我还没有找到解决方法。我正在想办法掩盖应用程序本身的放缓作为一种应对方式。如果有人发表任何更好的想法,我会接受他们的回答。

于 2013-07-17T04:48:42.337 回答