FAQ Qt
FAQ QtConsultez toutes les FAQ
Nombre d'auteurs : 26, nombre de questions : 298, dernière mise à jour : 15 juin 2021
Graphics View est une infrastructure qui permet de dessiner des scènes 2D complexes.
- 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.
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.
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.
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.
view.setCacheMode(QGraphicsView
::
CacheBackground);