2014-07-14 3 views
-1

Je travaille avec QtWebEngine. J'ai une page très lourde. Lorsque la page est chargée, je montre un autre QWindow (une fenêtre d'accueil).Comment forcer la mise à jour d'une fenêtre cachée?

Je m'abonne sur le signal loadingChanged du QQuickWebEngineView par lequel je montre la fenêtre avec webview.

Le problème est que QWE charge un contenu, mais ne le dessine pas dans le QSG tant que la fenêtre ne sera pas affichée. Comment je vois, le QWE attraper OnSwapCompositorFrame, appelez QQuickItem :: update() et c'est tout, rien d'autre ne se passe. Le composant updatePaintNode est appelé juste après l'affichage de la fenêtre.

Si j'utilise QPainter (-disable-delegated-renderer) à la place, QSG fonctionne correctement. J'ai fait quelques hacks, mais je pense qu'il y aura des effets secondaires.

Hack (dans 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); 
    } 
} 

est-il d'accord? Comment forcer la mise à jour d'une fenêtre cachée?

Répondre

Questions connexes