2. Scènes, éléments et vues
Pour utiliser le framework Graphics View, il est nécessaire de comprendre ses objets
de base. Ils sont au nombre de trois : scène, élément et vue. Chacun correspond à une
classe particulière du framework.
Scène
Une scène (classe QGraphicsScene) est un espace 2D sur lequel on va placer et
déplacer différents éléments géométriques. C'est un espace muni de son propre
système de coordonnées XY, qui est différent de celui de l'écran et qui peut
d'ailleurs être bien plus vaste. Un point un peu surprenant quand on débute est que
la scène ne s'occupe pas directement de l'affichage : elle ne sait pas dessiner et
n'a même aucune idée de ce qu'est un écran ou un pixel ! La scène définit
principalement une structure de données optimisée pour positionner un grand
nombre d'éléments et accéder efficacement à ceux-ci.
Élément
Un élément (classe QGraphicsItem) est un objet géométrique placé sur la scène. Il
a des coordonnées (x,y) définies dans le système de coordonnées de la scène. Il
définit très précisément les données et méthodes nécessaires pour dessiner un
certain objet 2D : lignes, rectangles, ellipses, textes, etc. Si le cadre donné est
principalement le dessin vectoriel, il est possible aussi de placer sur la scène des
images matricielles (bitmap), lues par exemple dans des fichiers au format PNG,
JPG, GIF, etc.
Vue
Une vue (classe QGraphicsView) est un widget qui permet de représenter une
scène donnée à l'écran. Comme tout widget, la vue s'affiche dans une zone
rectangulaire à l'écran qui représente la scène ou une partie de celle-ci. Plus
précisément, la vue a pour charge de dessiner, dans le cadre qui lui est alloué à
l'écran, les éléments de la scène visibles dans ce cadre (voir cadres hachurés sur
la Figure 10.2). Pour ce faire, la vue effectue une transformation pour passer du
système de coordonnées de la scène à celui de l'écran ; cette transformation basée
sur le calcul matriciel est très puissante : elle permet de gérer les fonctions de
zoom, de translation (barres de défilement, par exemple), voire les rotations. La
vue, qui hérite de QWidget, se charge de gérer aussi toutes les interactions avec
181
Pour utiliser le framework Graphics View, il est nécessaire de comprendre ses objets
de base. Ils sont au nombre de trois : scène, élément et vue. Chacun correspond à une
classe particulière du framework.
Scène
Une scène (classe QGraphicsScene) est un espace 2D sur lequel on va placer et
déplacer différents éléments géométriques. C'est un espace muni de son propre
système de coordonnées XY, qui est différent de celui de l'écran et qui peut
d'ailleurs être bien plus vaste. Un point un peu surprenant quand on débute est que
la scène ne s'occupe pas directement de l'affichage : elle ne sait pas dessiner et
n'a même aucune idée de ce qu'est un écran ou un pixel ! La scène définit
principalement une structure de données optimisée pour positionner un grand
nombre d'éléments et accéder efficacement à ceux-ci.
Élément
Un élément (classe QGraphicsItem) est un objet géométrique placé sur la scène. Il
a des coordonnées (x,y) définies dans le système de coordonnées de la scène. Il
définit très précisément les données et méthodes nécessaires pour dessiner un
certain objet 2D : lignes, rectangles, ellipses, textes, etc. Si le cadre donné est
principalement le dessin vectoriel, il est possible aussi de placer sur la scène des
images matricielles (bitmap), lues par exemple dans des fichiers au format PNG,
JPG, GIF, etc.
Vue
Une vue (classe QGraphicsView) est un widget qui permet de représenter une
scène donnée à l'écran. Comme tout widget, la vue s'affiche dans une zone
rectangulaire à l'écran qui représente la scène ou une partie de celle-ci. Plus
précisément, la vue a pour charge de dessiner, dans le cadre qui lui est alloué à
l'écran, les éléments de la scène visibles dans ce cadre (voir cadres hachurés sur
la Figure 10.2). Pour ce faire, la vue effectue une transformation pour passer du
système de coordonnées de la scène à celui de l'écran ; cette transformation basée
sur le calcul matriciel est très puissante : elle permet de gérer les fonctions de
zoom, de translation (barres de défilement, par exemple), voire les rotations. La
vue, qui hérite de QWidget, se charge de gérer aussi toutes les interactions avec
181
