-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

ACTIVE ペインターを作成し、QWidget::renderを使用します。

于 2014-07-14T07:55:31.920 に答える