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 中。