Bonjour à vous tous
Je tente d'ajouter un item (ellipse dans mon cas), sur une scene via un clic de souris. Le soucis étant que quand je clique à un endroit dans ma scene, l'ellipse se forme plus loin (la distance entre mon clic et l'ellipse tracé équivaut à la distance entre l'origine de ma scene et l'origine de mon application.)
Une petite photo :
Et mon code :
et mon scene est déclaré ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 def paintMarkers(self,event): self.circleItem = QGraphicsEllipseItem(0.,0.,10.,10.) self.circleItem.setPos(self.p.x(), self.p.y()) self.scene.addItem(self.circleItem) def mousePressEvent(self, event): self.view.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) self.p = self.view.mapToScene(event.pos()) self.paintMarkers(event)
J'ai essayé toute la journée avec les mapToScene, mapFromScene etc.... Impossible de caler correctement les items à l'endroit ou je clique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 self.scene = QGraphicsScene() self.scene.addPixmap(QPixmap.fromImage(im)) self.view.setCursor(Qt.CrossCursor) self.view.setAlignment(QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) self.view.setScene(self.scene) self.view.setTransformationAnchor(QGraphicsView.AnchorUnderMouse) self.view.setDragMode(QGraphicsView.RubberBandDrag) self.view.update() self.view.fitInView(QRectF(0, 0, w, h), Qt.KeepAspectRatio)
Je pense qu'il suffirait que je retranche l'origine de ma scene par rapport à mon application, mais je ne sais pas comment trouver les coordonnées de ma scene relative à l'origine de l'application.
Pour faire quelque chose du genre :
Avez vous une idée de comment faire ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 self.circleItem.setPos(self.p.x()-originerelativescene, self.p.y()-originerelativescene)
En vous remerciant par avance,
Jonathan
Partager