我正在使用QtWebEngine。我的页面很重。当页面加载时,我显示另一个QWindow(一个启动窗口)。
我订阅了QQuickWebEngineView的loadingChanged信号,我用它来显示带有webview的窗口。
问题是QWE加载内容,但在显示窗口之前不会在QSG中绘制内容。我怎么看,QWE捕获OnSwapCompositorFrame,调用QQuickItem :: update()并且全部,没有其他事情发生。在显示窗口后立即调用updatePaintNode。
如果我使用QPainter(-disable-delegated-renderer)而不是QSG一切正常。我做了一些黑客攻击,但我认为会有副作用。
Hack(在src / webengine / render_widget_host_view_qt_delegate_quick.cpp中)
void RenderWidgetHostViewQtDelegateQuick::update(const QRect&)
{
if (window()->isVisible()) {
if (hiddenNode) {
delete hiddenNode;
hiddenNode = NULL;
}
QQuickItem::update();
} else {
hiddenNode = updatePaintNode(hiddenNode, NULL);
}
}
可以吗?如何强制更新隐藏窗口?