!还未完全理解如何奏效的,
def mousePressEvent(self, event: QMouseEvent):
"""Dispatch Qt's mousePress event to corresponding function below"""
if event.button() == Qt.MiddleButton:
self.middleMouseButtonPress(event)
else:
super().mousePressEvent(event)
def mouseReleaseEvent(self, event: QMouseEvent):
"""Dispatch Qt's mouseRelease event to corresponding function below"""
if event.button() == Qt.MiddleButton:
self.middleMouseButtonRelease(event)
else:
super().mouseReleaseEvent(event)
def middleMouseButtonPress(self, event):
releaseEvent = QMouseEvent(QEvent.MouseButtonRelease, event.localPos(), event.screenPos(),
Qt.LeftButton, Qt.NoButton, event.modifiers())
super().mousePressEvent(releaseEvent)
self.setDragMode(QGraphicsView.ScrollHandDrag)
fakeEvent = QMouseEvent(event.type(), event.localPos(), event.screenPos(), Qt.LeftButton,
event.buttons() | Qt.LeftButton, event.modifiers())
super().mousePressEvent(fakeEvent)
def middleMouseButtonRelease(self, event):
print('MMB')
QGraphixcsView的属性
DragMode中文解释:此属性保留在按下鼠标左键时将鼠标拖到场景上的行为。
此属性定义了当用户单击场景背景并拖动鼠标时(例如,使用手形光标滚动视口内容或使用橡皮筋选择多个项目)时应该发生的情况。 默认值NoDrag不执行任何操作。
此行为仅影响任何项目均未处理的鼠标单击。 您可以通过创建QGraphicsView的子类并重新实现mouseMoveEvent()来定义自定义行为。