我有一个将 mouseTracking 设置为的小部件,True
并且以下代码打印 5,即使我没有按任何按钮。此外, MouseButton 枚举文档中未提及类型 5 。那么什么是类型5,为什么是类型5的mouseEvent呢?
编码:
def mouseMoveEvent(self, event: QMouseEvent) -> None:
print(event.type())
我有一个将 mouseTracking 设置为的小部件,True
并且以下代码打印 5,即使我没有按任何按钮。此外, MouseButton 枚举文档中未提及类型 5 。那么什么是类型5,为什么是类型5的mouseEvent呢?
编码:
def mouseMoveEvent(self, event: QMouseEvent) -> None:
print(event.type())
您对所有QEvents的type()
属性感到困惑。
实际上,在Type
QEvent 的枚举中,MouseMove
有值 5。
如果要检查鼠标移动事件的按下按钮,请使用buttons()
QMouseEvent 的属性。
请注意,和button()
不是buttons()
一回事:
button()
返回导致事件的按钮,这意味着它将始终0
用于鼠标移动事件,因为该事件是由移动引发的,而不是按钮压力;buttons()
在事件生成时返回按钮(您可能对此感兴趣);最后,mouseMoveEvent()
总是为已mouseTracking
启用的小部件调用。这在某些特殊情况下默认发生(通常用于基于滚动区域的类),例如在具有交互式项目的 QGraphicsView 中。