2010-07-18 5 views
2

J'ai un QGLWidget qui dessine des graphiques 3D et 2D (comme dans Qt's overpainting example). La chose est après avoir ajouté dessin graphique 2D (déplacé le code de paintGL() à paintEvent(), etc.), le widget a cessé de redessiner la plupart du temps. Il n'a pas été redessiné après la re-gravure, après le chargement, etc. Donc, je mets repaint() appels, il a aidé dans certains cas, mais n'aide pas, par exemple. redimensionnement.Redessiner QGLWidget avec des graphiques 3D + 2D

Alors quelle fonction dois-je utiliser pour actualiser le widget? Est-ce update() ou updateGL() ou repaint()? Ou peut-être existe-t-il un moyen de définir un mode pour activer le redessin automatique après le redimensionnement/charger/...?

Merci.

Répondre

4

Vous devez généralement utiliser 'update', car cela permettra de regrouper plusieurs événements de peinture en file d'attente en un seul événement. La méthode de mise à jour appelle updateGL pour QGLWidgets. La méthode 'repaint' devrait être utilisée si vous voulez une repeinte immédiate.

Si vous avez raccordé une minuterie pour appeler périodiquement 'mise à jour', l'absence de repeint régulièrement indique généralement que vous mettez l'accent sur le processeur. L'affichage d'une partie du code peut faciliter la compréhension des problèmes de redimensionnement/initialisation.

Questions connexes