Я работаю с QtWebEngine. У меня очень тяжелая страница. Когда страница загружена, я показываю другое QWindow (всплывающее окно).
Я подписываюсь на сигнал loadChanged QQuickWebEngineView, которым я показываю окно с веб-просмотром.
Проблема в том, что 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);
}
}
Это нормально? Как заставить обновить скрытое окно правильно?
Создайте АКТИВНОГО художника и используйте QWidget :: оказывать