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