如何强制更新隐藏窗口?

时间:2014-07-14 07:50:11

标签: c++ qt qtwebengine

我正在使用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);
     }
}

可以吗?如何强制更新隐藏窗口?

1 个答案:

答案 0 :(得分:0)

创建一些ACTIVE画家并使用QWidget::render