Projet

Général

Profil

Framework Graphic View

Ce framework inclut une architecture de propagation d'événements qui autorise des interactions avec les éléments de la scène.
Les éléments peuvent traiter les événements clavier, souris, et peuvent suivre les mouvements de la souris.

L'architecture du framework Graphic View

Graphic View fournit une approche basée sur les éléments de la programmation modèle-vue.
Cette bibliothèque fournit un widget (composant graphique) pour l'affichage d'une QGraphicsScene.

Plusieurs vues peuvent observer la même scène (QGraphicsScene) et la scène contient des éléments (QGraphicsItems) de formes géométriques variées tels que des lignes, des rectangles, du texte ou mêmes des éléments personnalisés sur une surface 2D.
L'avantage de l'utilisation du framework Graphic View est que, par son architecture, on peut retrouver rapidement les éléments qu'elle contient.
Par conséquence, elle permet d'afficher de très grandes scènes en temps réel, même avec des millions d'éléments.

Attention, ne pas confondre le framework Graphic View et la classe QGraphicsView, qui fait partie du framework (Qt aurait pu faire un effort de nommage :p ).

La scène

QGraphicsScene est la scène de la vue graphique. La scène a les responsabilités suivantes :
  • fournir une interface graphique pour gérer un grand nombre d'éléments
  • propager des événements à chaque objet
  • gérer les états des éléments (comme la sélection et le focus)
  • fournir une fonction de rendu non transformé (pour l'impression)

La scène est un contenant pour les éléments de type QGraphicsItem (les éléments).
Ces éléments peuvent être ajoutés à la scène par l'appel de la fonction QGraphicsScene::addItem().

QGraphicsScene gère la transmission des événements de la scène aux éléments et propage également les événements entre les éléments.
Si la scène reçoit un événement, par exemple un clic de souris à un endroit donné, la scène renvoie l'évènement à l'objet (QGraphicsItem) situé à cette position.

La vue graphique

QGraphicsView est le widget vue, qui affiche le contenu d'une scène (QGraphicsScene).
Il est possible d'attacher plusieurs vues à la même scène, pour fournir plusieurs affichages du même jeu de données.
C'est-à-dire que la scène ne bouge pas, mais c'est la vue qui se « promène » et permet de rendre visible ou de cacher certains éléments.

Le rôle de la vue (QGraphicsView) est de recevoir des événements d'entrée depuis le clavier et la souris et de les traduire en événements de la scène visualisée (en convertissant les coordonnées réelles en coordonnées « compréhensibles » pour la scène si nécessaire).
Elle permet des fonctions de navigation avancées comme le zoom et la rotation.

L'élément graphique

QGraphicsItem est la classe de base pour tous les éléments graphiques dans une scène.
La vue graphique fournit plusieurs éléments standards comme des rectangles (QGraphicsRectItem), des ellipses (QGraphicsEllipseItem), etc...

QGraphicsItem fournit les fonctions suivantes :
  • événements souris : mouvements, clic, double clic , appui et relâchement de la souris, survol, molette et menu contextuel
  • clavier : focus et événements des touches
  • glisser-déposer
  • groupement, à la fois par la relation parent-enfant et QGraphicsItemGroup
  • détection de collision

Les éléments (QGraphicsItem) peuvent contenir des éléments enfants. Les transformations de l'élément parent sont héritées par les enfants.

Un peu plus de documentation se trouve à cette adresse : http://qt.developpez.com/doc/4.7/vue-graphique-graphics-view/#la-scene

GraphicView.png (6,07 ko) Icham, 18/06/2012 15:09

Redmine Appliance - Powered by TurnKey Linux