我在应用程序中使用QMenu,当我在QMenu外部单击以关闭它时,Qt会发出几个事件。我发现在Linux上,它会发出以下事件:
QEvent::MouseButtonPress
QEvent::Close
QEvent::Hide
QEvent::HideToParent
QEvent::UpdateRequest
QEvent::Leave
在Mac OS上,发出的事件如下所示:
QEvent::Close
QEvent::Hide
QEvent::HideToParent
QEvent::UpdateRequest
QEvent::Leave
可见,当QMenu关闭时,在Mac环境下不会发出QEvent::MouseButtonPress。我想知道这是Qt中的错误还是故意的行为。
在我的代码中,我在mousePressEvent()方法中计算QMenu关闭时鼠标单击的坐标,我在继承QMenu的自定义菜单类中重写了这个方法。但由于上面强调的原因,它破坏了Mac OS上的整个应用程序。
我使用的是Qt版本5.12.3
https://stackoverflow.com/questions/56940933
复制相似问题