我正在使用没有QWebView的QWebPage,因为我想将HTML文件的内容呈现到QPixmap/QImage上.
我希望页面的加载是同步完成的,而不是异步的,这是默认的.默认方式是调用QWebFrame::setHtml()
或QWebFrame::setContent()
,但这会异步加载图像.我想要的是某种阻塞函数调用,就像QWebFrame::waitUntilLoadFinished()
之后我可以调用render()
它并完成它.
我找不到办法做到这一点.我错过了什么吗?
如果有人仍然需要它,这就是我的工作方式.
mWebPage->mainFrame()->setHtml("..."); QEventLoop loop; connect(mWebPage,SIGNAL(loadFinished(bool)),&loop,SLOT(quit())); loop.exec(); /* your webpage has finished loading & is ready to use */
我建议你用Qt方式做它并做异步,它有很大帮助.
如果您仍想在同步中执行此操作,请在单独的QThread中使用QEventLoop.
有关详细的QThread使用信息,请参阅我的评论.注意:别忘了调用moveToThread(); 在线程头内,或者所有信号都将通过QApplication执行循环.