我在我的应用程序中使用 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 关闭时,QEvent::MouseButtonPress 不会在 Mac 环境中发出。我想知道这是 Qt 中的错误还是故意行为。
在我的代码中,我正在计算关闭 QMenu 时鼠标单击的坐标,在 mousePressEvent() 方法中,我在继承 QMenu 的自定义菜单类中覆盖了该方法。但由于上面强调的原因,它正在破坏 Mac OS 上的整个应用程序。
我正在使用Qt 版本 5.12.3