Bonjour.
Je désire récupérer les coordonnées des mes objets qui sont dans une graphicsscene, afin d'enregistrer leur nouvelle position s'ils se déplacent . J'y arrive mais les coordonées ne correspondent pas avec celles que j'ai utilisé pour les afficher:
Donc là j' affiche mes objets:
Et ici je récupère le MoveEvent sur mon objet pour stocker les nouvelles coordonées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Node *node1 = new Node(this,Utils::hasCoordinates(tmparete.destination->getNumero())); node1->setnumroStation(tmparete.destination->getNumero()); double x = (originePt.getX() + dblDistHoriz * sin(RadangleH)); double y = (originePt.getY() + dblDistHoriz * cos(RadangleH)); ListPoints.append(CaltopoPoint(tmparete.origine->getNumero(), x,y,0)); node1->setPos(5*x, 5*y); node1->afficherStation();
Lorsque je clique sur un objet je peut déjâ voir que les coordonées qui sortent de qDebug sont très différentes de celles utilisées plus haut pour l'afficher il ne s'agit donc pas d'un simple écart entre le mouvement de la souris et l'affichage.
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
19
20
21
22
23
24
25
26 void Node::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { update(); QGraphicsItem::mouseMoveEvent(event); QPointF dim = this->scenePos(); double absisse = dim.x(); double ordonee = dim.y(); QSqlQuery query; query.prepare("UPDATE caltopoPoint set x = ?, y = ? WHERE numeroStation = "+numeroStation ); query.addBindValue(absisse); query.addBindValue(ordonnee); query.exec(); qDebug () <<"x: "<< absisse <<" y: "<< ordonee; }
J'ai utilisé différentes methodes comme: Graphicsitem::scenePos() et Graphicsitem::pos() qui renvoient les mếme résultats, ou les methodes qui récupèrent la position de la souris QMoveEvent::globalPos() , QMoveEvent::screenPos()
Aucune ne me redonne les coordonées que je veux.
Dans la doc de qt il précise qu'il y a 3 système de coordonées un pour la "View" un pour la "scene" , et un autre pour chaque objet . j'imagine donc que les coordonées ont été mise dans un système et que je les redemande dans un autre.Mais je bloque toujours.
Merci d'avance
Partager