如何强制更新隐藏窗口?

Posted

技术标签:

【中文标题】如何强制更新隐藏窗口?【英文标题】:How to force update a hidden window? 【发布时间】:2014-07-14 07:50:10 【问题描述】:

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

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

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

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

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】:

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

【讨论】:

以上是关于如何强制更新隐藏窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 observable 从 DOM 元素中读取值

如何使用javascript强制关闭android键盘

如何强制键盘显示/隐藏? [复制]

3条命令隐藏被强制显示出来的系统恢复分区

(C#)Winform 关于隐藏标题栏后的问题

防止在presentViewController上隐藏键盘(显示弹出窗口)