我有一个应用程序需要用于QWebView::setContent()
将一些 HTML 内容加载到 QWebView。所有这些都发生在带有 ARMv5 处理器(想想 400 MHz)的嵌入式设备上。大多数时候,我可以在合理的时间内加载页面(最多 5 秒),但有时我的内容需要很长时间才能加载(300KB 的内容大约需要 30 秒)。
问题是setContent
调用阻塞了主线程。我需要能够在加载期间处理事件,如果用户决定不再等待,甚至可以取消加载。
我正在考虑setContent
在其他线程中运行调用,以便它不会阻塞事件处理,并且我可以在必要时取消它。但是,我得到了可怕的“必须在 GUI 线程中创建小部件”,而且我认为没有办法轻松解决这个问题。
是否可以QWebView::setContent
在单独的线程中运行?如果是这样,怎么做?如果没有,是否可以在setContent
运行时处理 GUI 事件?是否可以“取消”setContent
通话?
编辑
再澄清一点,我真正感兴趣的是如何能够停止setContent
调用和/或处理 GUI 消息,以便界面保持响应,并使用setContent
.
编辑 2
为了进一步澄清,我正在处理长的静态内容,即没有 JavaScript,只有大量静态 HTML,即使在加载更多内容时用户也希望通过这些 HTML 滚动。主要思想是即使页面未完全加载,也允许她/他向下浏览页面。