MousePressEvent捕获不必要的信号 - PyQt4

时间:2013-01-22 07:45:32

标签: python mouseevent pyqt4 polygon qgraphicsview

所以我有一个带有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的类。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您应该调用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)