QMouseEvent 是类型 5?什么是类型 5?

问题描述

我有一个将 mouseTracking 设置为 True 的小部件,即使我没有按下任何按钮,以下代码也会打印 5。此外,MouseButton enum docs 中没有提到类型 5。 那么什么是类型 5,为什么是类型 5 的 mouseEvent?

代码:

def mouseMoveEvent(self,event: QMouseEvent) -> None:
    print(event.type())

解决方法

您对 all QEvents 的 type() 属性感到困惑。

实际上,在 QEvent 的 Type 枚举中,MouseMove 的值为 5。

如果要检查鼠标移动事件的按下按钮,请使用 QMouseEvent 的 buttons() 属性。

请注意,button()buttons() 不是同一件事:

  • button() 返回引起事件的按钮,这意味着鼠标移动事件总是0,因为该事件是由移动发起的,而不是按下按钮;
  • buttons() 返回事件生成时的按钮(您可能对此感兴趣);

最后,对于启用了 mouseTracking 的小部件,始终会调用 mouseMoveEvent()。这在某些特殊情况下默认发生(通常用于基于滚动区域的类),例如在具有交互项的 QGraphicsView 中。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...