0

我有一个将 mouseTracking 设置为的小部件,True并且以下代码打印 5,即使我没有按任何按钮。此外, MouseButton 枚举文档中未提及类型 5 。那么什么是类型5,为什么是类型5的mouseEvent呢?

编码:

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

1 回答 1

1

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

实际上,在TypeQEvent 的枚举中,MouseMove有值 5。

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

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

  • button()返回导致事件的按钮,这意味着它将始终0用于鼠标移动事件,因为该事件是由移动引发的,而不是按钮压力;
  • buttons()在事件生成时返回按钮(您可能对此感兴趣);

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

于 2021-02-19T19:00:45.120 回答