-1

我正在使用 QtWebEngine。我的页面很重。加载页面时,我会显示另一个 QWindow(启动窗口)。

我订阅了 QQuickWebEngineView 的 loadingChanged 信号,我通过它显示带有 webview 的窗口。

问题是 QWE 加载内容,但在显示窗口之前不会在 QSG 中绘制它。我怎么看,QWE 捕获 OnSwapCompositorFrame,调用 QQuickItem::update() 就这样,没有其他任何事情发生。updatePaintNode 在窗口显示后被调用。

如果我使用 QPainter (-disable-delegated-renderer) 而不是 QSG 一切正常。我做了一些黑客攻击,但我认为会有副作用。

破解(在 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);
     }
}

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

4

1 回答 1

0

Create some ACTIVE painter and use QWidget::render

于 2014-07-14T07:55:31.920 回答