Utilisation de GraphicsView
Un GraphicsView est une zone graphique comportant des scènes.
Une scène est un élément graphique : image, video, figure géométrique, etc....
Les origines de la vue, de la scène et des objets sont différentes...
- L'origine de la vue est le point supérieur gauche
- l'origine de la scène est le milieu de la scène
- l'origine de l'objet est le centre de l'objet
Initialisation du graphicsView
- GraphicsView peut être placé avec QTDesigner :
- Il faut associer graphicsView avec une GraphicScene :
dans l'entête :
#include <QGraphicsScene>
.....
private:
QGraphicsScene *scene;
dans le code cpp
scene = new QGraphicsScene(this);
scene->setSceneRect(QRectF(0,0,400,400));
ui->graphicsView->setScene(scene);
setSceneRect permet de définir la zone de la scène et positionne également l'origine.
Sans cette ligne d'instruction, tous les objets placés seront placés au centre :
Dessiner dans un graphicsView
- Pour dessiner dans un graphicsView, il faut définir le crayon (contour des objets) et la brosse (remplissage des objets)
dans le header :
QBrush *blueBrush;
QPen *blackPen;
dans le code :
blueBrush = new QBrush();
blueBrush->setColor(Qt::blue);
blueBrush->setStyle(Qt::SolidPattern);//type solid
blackPen = new QPen();
blackPen->setColor(Qt::black);
blackPen->setWidth(4);//largeur du pinceau
- Les figures se placent ensuite grâce à des méthodes spécifiques :
dans le header :
QGraphicsRectItem *rectangle;
QGraphicsEllipseItem *ellipse;
dans le code :
//les paramètres sont coordonnéX, coordonnéY, largeur, hauteur, crayon, brosse
rectangle = scene->addRect(0,0,50, 100, *blackPen,*redBrush);
ellipse = scene->addEllipse(100,80,20,40,*blackPen,*redBrush);
Pour un exemple plus complet, voir le chapitre consacré au damier.
Déplacer un élément graphique
Il est nécessaire d'inclure dans l'entête (.h) la bibliothèque de l'objet graphique (GraphicsEllipseItem par exemple)
Le déplacement de l'objet se fait alors avec la méthode setPos :
...
rectangle->setPos(x1,y1);
ellipse->setPost(x2,y2);
Trouver la position d'un objet
La méthode pos restitue la position de l'objet graphique sous forme de point
QPointF posCible;
posCible=cible->pos();
int posX=posCible.rx();
int posY=posCible.ry();