Bonjour à vous tous,
J'ai un GraphicScene défini dans une classe GraphicsView :
Dans cette scène, j'affiche une première image, puis une seconde que j'aimerai déplacer à la souris.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 class graphicsView (QGraphicsView): def __init__ (self, AppWindow,parent=None): super (graphicsView, self).__init__ (parent) self._zoom = 0 #self.parent = parent #self.scene=AppWindow.scene self.scene = QGraphicsScene() self.angleSlider=AppWindow.angleSlider self.angleSlider.sliderReleased.connect(self.rotate_item) self.setMouseTracking(True) self.setInteractive(True) self.coo1line=AppWindow.coo1line self.coo2line=AppWindow.coo2line self.coo3line=AppWindow.coo3line self.setMouseTracking(True) def hoverEnterEvent(self, event): shape = QtGui.QCursor(QtCore.Qt.CrossCursor) cursor = QtGui.QCursor(shape, -1, -1) self.setCursor(cursor) def wheelEvent(self, event): self.zoom_step = 1.1 zoom_in = event.angleDelta() if zoom_in.y() > 0: zoom = self.zoom_step else: zoom = 1 / self.zoom_step print("zoom",zoom) self.scale(zoom, zoom) print("view",self.scale(zoom, zoom)) def paintMarkers(self, event): self.circleItem = QGraphicsEllipseItem(0,0,10,10) self.circleItem.setPos(self.p.x()-self.circleItem.boundingRect().width()/2.0, self.p.y()-self.circleItem.boundingRect().height()/2.0) self.scene.addItem(self.circleItem) self.circleItem.setPen(QtGui.QPen(QtCore.Qt.red, 1.5)) def mousePressEvent(self, event): super(graphicsView, self).mousePressEvent(event) self.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) self.p = self.mapToScene(event.pos()) self.paintMarkers(event) #self.item.leftMouseButtonPressed.emit(scenePos.x(), scenePos.y()) def mouseMoveEvent(self, event): super(graphicsView, self).mouseMoveEvent(event) self.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) def mouseReleaseEvent(self, event): super(graphicsView, self).mouseReleaseEvent(event) self.leftClick = False
J'aimerai aussi pouvoir rajouter des items (ellipse) en cliquant sur la scène (quand je clique pas sur la seconde image). J'arrive à faire marcher soit l'un soit l'autre.
Quand je supprime "def paintMarkers" ainsi que son appel dans MousePressEvent, je parviens à faire bouger ma seconde image. Par contre quand il est activé, je parviens à faire des petites ellipses mais je ne peux plus déplacer la seconde image.
J'ai essayé de voir du coté de itemAt, pour que lorsque qu'on clique sur la seconde image on puisse la déplacer, mais je ne parviens pas du tout à le faire fonctionner.
Auriez vous des astuces pour faire fonctionner les deux modes en même temps ?
Merci par avance à tout ceux qui m'aideront !
Partager