【发布时间】:2016-04-25 08:42:47
【问题描述】:
这是一个错误,我不小心解决了它,但不知道为什么会这样。我希望有人可以向我解释其背后的逻辑。
我重新实现了 QGraphicsItem 及其 mousePressEvent。
通过这样做,该项目不再是可移动的。
即使尝试拨打QGraphicsItem.mousePressEvent(self, event) 也不起作用。
只有当我重新实现 mouseMoveEvent() 和 mouseReleaseEvent() 时,它才最终起作用。
代码:
class LWResizeableItem(QtGui.QGraphicsItem):
def __init__(self):
super(LWResizeableItem, self).__init__()
self.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
def mousePressEvent(self, event):
QtGui.QGraphicsItem.mousePressEvent(self, event)
< some code.... >
def mouseMoveEvent(self, event):
QtGui.QGraphicsItem.mouseMoveEvent(self, event)
def mouseReleaseEvent(self, event):
QtGui.QGraphicsItem.mouseReleaseEvent(self, event)
【问题讨论】:
-
Qt C++ documentation 解释了 Qt 如何决定向哪个项目提供鼠标事件。也许它有帮助(我不能 100% 确定它是否能解释您所看到的,我认为这取决于您对
mousePressEvent()的实施)
标签: mouseevent pyqt4 qgraphicsitem mousepress