FAQ Qt FAQ Qt Creator FAQ PyQt & PySide

FAQ QtConsultez toutes les FAQ

Nombre d'auteurs : 26, nombre de questions : 298, dernière mise à jour : 26 juillet 2017 

 
OuvrirSommaireModulesQt GUI et Qt WidgetsSystèmes d'affichageGraphics View

Graphics View est une infrastructure qui permet de dessiner des scènes 2D complexes.

Graphics View permet de :
  • dessiner des éléments en 2D ;
  • faire interagir l'utilisateur avec ces éléments ;
  • appliquer des transformations avancées sur les éléments ;
  • animer les éléments.

Voici un exemple minimaliste pour montrer quelques possibilités de Graphics View.

Insérer une boîte de dialogue dans la scène, et la déformer
CacherSélectionnez
Mis à jour le 2 janvier 2010  par Benjamin Poulain

Si vous avez un problème de vitesse avec Graphics View, commencez par vérifier que le problème ne se situe pas dans l'un de vos items. Graphics View est extrêmement performant, il n'est pas inhabituel d'y dessiner plusieurs milliers d'éléments (essayez la démo chip par exemple). Les problèmes de vitesse sont généralement dus à un graphics item qui se dessine trop lentement, ou à des rafraîchissements abusifs.

Si le problème ne vient pas de là, vous pouvez utiliser un back-end plus performant pour dessiner. Dessiner avec les back-ends de la plateforme est assez lent, Qt contourne le problème en dessinant sur un format interne optimisé. Cela peut être configuré en ajoutant -graphicssystem raster ou -graphicssystem opengl dans les paramètres de la ligne de commande de l'application. Notez que l'option raster ne change rien pour Windows, car c'est déjà le back-end par défaut.

 
Sélectionnez
view.setViewport(new QGLWidget); 

Si cela n'est toujours pas suffisant, il vous faut optimiser précisément votre vue à l'aide des options de QGraphicsView. Une première option à considérer est renderHints. Cette option permet de configurer les paramètres du QPainter utilisé pour dessiner la scène. Si vous utilisez l'anti-aliasing par exemple, cela ralentit fortement le dessin des items.

 
Sélectionnez
view.setRenderHint(QPainter::Antialiasing, false);
view.setRenderHint(QPainter::TextAntialiasing, false);

Un autre paramètre utile est optimizationFlags. Cette propriété permet de changer les paramètres de bas niveau du dessin de la scène. Par exemple, concevoir les items pour pouvoir utiliser QGraphicsView::DontSavePainterState est important si les items sont très nombreux. À la différence des autres options, les paramètres de optimizationFlags impliquent des effets de bord sur le rendu de la scène. Ne changez ce paramètre que si vos items sont conçus en conséquence.

Finalement, il existe le paramètre cacheMode pour accélérer le rendu du fond de la vue. Le cacheMode permet de demander à la vue de créer un cache pour l'image de fond. Cette option n'est utile que si le fond est long à dessiner, par exemple s'il s'agit d'une image, d'un dégradé ou si la transparence est utilisée.

 
Sélectionnez
view.setCacheMode(QGraphicsView::CacheBackground);
Mis à jour le 7 mai 2012  par Benjamin Poulain
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 - 2017 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.