Bonjour,
J'ai un problème de compréhension de la gestion des coordonnées dans un qgraphicsview.
J'ai crée une classe myview dérivée de qgraphicsview dans laquelle j"ai réécrit mousePressEvent, mouReleaseEvent, et mousMoveEvent ( je précises au cas ou ça a une importance mais je ne pense pas ).
Mon qgraphicsView contient une image. Voici le code d'init de ma vue
Lors d'un clic sur un bouton ( hors du qgraphicsview ), je dessine un rectangle via le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 scene = new QGraphicsScene(); view = new myview(scene); QPixmap pix=QPixmap::fromImage(image); img_fond=scene->addPixmap(pix); view->setScene(scene); view->fitInView(scene->sceneRect());
J'ai aussi une fonction qui trace une droite une fois un bouton cliqué ( avec utilisation de mousPrressEvent, mouseMoevent, et mouseReleaseEvent pour son tracé )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 QGraphicsRectItem* ajout_rectangle = new GraphicsRectItem(QRectF(100,100,100,100)); ajout_rectangle->setPen(Qt::NoPen); ajout_rectangle->setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable); ajout_rectangle->setBrush(QBrush(Qt::black)); scene->addItem(ajout_rectangle);
Je n'arrive pas à avoir les coordonnées des différents élements.
Voici le code que j'utilise :
Dans les tous les cas, pos et scenePos me retournent (0,0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 QList<QGraphicsItem *> items=scene->items(); for (int boucle=0;boucle<items.count();++boucle) { switch(items.at(boucle)->type()) { case 3: qDebug()<<"qgraphicsPixmap"; break; case 6: qDebug()<<"qgraphicsLine"; break; case 7: qDebug()<<"qgraphicsrect"; break; } qDebug()<<" "<<items.at(boucle)->pos()<<items.at(boucle)->scenePos(); }
J'ai besoin de récuperer les coordonnées des différents QGraphicsItem afin de sauvegarder ma scene.
Merci pour votre aide.
Partager