d'affichage (viewport) avec, au besoin, des barres de défilement ; ce concept vient en
fait de la classe QAbstractScrollArea dont hérite QGraphicsView. Cet affichage met en
jeu des transformations (notamment, pour gérer les zooms) ainsi que du clipping, pour
n'afficher que ce qui est visible dans la zone d'affichage.
À l'inverse des classes que nous venons de voir, QGraphicsView ne nous est pas
complètement étrangère puisqu'elle hérite de QWidget. C'est donc un vrai widget qu'on
peut intégrer dans n'importe quelle fenêtre PyQt. Pour s'en convaincre, il suffit d'ouvrir
Qt Designer : dans la Boîte de widget sur la gauche, on a, dans la catégorie Display
Widgets, un Graphics View prêt à être déposé sur une fenêtre en cours de conception.
On peut alors ajuster ce widget en utilisant notamment les techniques de disposition
intelligente basées sur les positionneurs (layouts). Dans Qt Designer, ce widget est une
instance de QGraphicsView vide, c'est-à-dire sans scène associée ; c'est
compréhensible : la scène et ses éléments sont des abstractions, des non-widgets, qui
sortent largement du cadre de Qt Designer. La création de la scène et l'association avec
la (ou les) vue(s) se feront donc dans notre programme Python, après génération du
code lié au fichier .ui.
Figure 10.5 : QGraphicsView dans Qt Designer
À côté des fonctions d'affichage, la classe QGraphicsView s'occupe aussi des
événements utilisateur. C'est logique : en tant que widget visible à l'écran, elle est en
première ligne pour recevoir les événements souris et clavier. La vue QGraphicsView
187
Précédent

- 188/494

Suivant