所以我有一个QGraphicsPolygonItem的QraphicsScene,我标记为可移动。我还重写了MousePressEvent。我的代码片段到现在为止。
def mousePressEvent(self , e):
self.endx = e.x()
self.endy = e.y()
if self.sender == 1:
self.LineChange(self.endx , self.endy)
#...
def CreateFun(self):
poly = QtGui.QPolygonF([QtCore.QPointF(100 , 100) , QtCore.QPointF(100 , 200) , QtCore.QPointF(200 , 200)])
self.polygon = QtGui.QGraphicsPolygonItem(poly)
self.scene.addItem(self.polygon)
self.polygon.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
但是多边形没有移动。当我注释掉MousePressEvent时,它移动得很好。我的猜测是MousePressEvent,在PolygonItem之前捕获它。
以上函数来自QtGui.QGraphicsView继承的类。有什么建议吗?
您应该调用mousePressEvent
的基本实现。QGraphicsView
通常将这些点击传递给可能使用它们的其他项目。如果你不调用基本实现你基本上是在'诱捕'点击。
修改你的mousePressEvent
如下:
def mousePressEvent(self , e):
self.endx = e.x()
self.endy = e.y()
if self.sender == 1:
self.LineChange(self.endx , self.endy)
# let the base implementation do its thing
super(Palette, self).mousePressEvent(e)