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...

Initialisation du graphicsView

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

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

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();