Position de QGraphicsItem
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
Code:
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()); |
Lors d'un clic sur un bouton ( hors du qgraphicsview ), je dessine un rectangle via le code suivant :
Code:
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); |
J'ai aussi une fonction qui trace une droite une fois un bouton cliqué ( avec utilisation de mousPrressEvent, mouseMoevent, et mouseReleaseEvent pour son tracé )
Je n'arrive pas à avoir les coordonnées des différents élements.
Voici le code que j'utilise :
Code:
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();
} |
Dans les tous les cas, pos et scenePos me retournent (0,0)
J'ai besoin de récuperer les coordonnées des différents QGraphicsItem afin de sauvegarder ma scene.
Merci pour votre aide.