在QImage上渲染QWebElement时,QT应用程序挂起

QT application hangs while rendering QWebElement on QImage

本文关键字:QT 应用程序 挂起 QWebElement QImage      更新时间:2023-10-16

我使用QWebPage类在QT应用程序的后台加载页面。每当它发出"重新绘制请求"时,我都会尝试将主框架的内容渲染到画家(QImage)上使用如下代码:

QWebpage page;
QImage m_image
onRepaintRequest(){
    QMutexLocker locker(&mutex);
    QPainter painter(m_image);
    page.mainFrame()->documentElement().render(&painter)
}

我的应用程序有时会在render函数调用时随机挂起
我确保m_image不会被任何其他线程访问
这种行为的原因可能是什么?

编辑:如果我在主框架上调用render,而QWebPage正在内部更新它,这会导致挂起吗?这是QT内部应该处理的问题。

  • 为什么page.mainFrame()->documentElement().render(&painter)而不是page.mainFrame()->render(&painter)

  • 正如文档中所说,使用void QWebFrame::render ( QPainter * painter, const QRegion & clip )表单可以避免呈现无休止的循环。