我有一个基本的 QDialog,它的 WindowFlags 设置为 Qt::Popup,因此它显示为典型的弹出窗口覆盖。在 Windows 上,一切正常,如果您在主窗口外或其他任何地方单击,它就会消失。但在 Mac OSX 上,如果您单击顶部的菜单栏或调整窗口大小,弹出窗口将停留在原处。我完全没有对弹出窗口的鼠标进入/离开/移动/按下事件进行内部处理,所以关闭它不是我什至处理的事情......它在 Windows 上只是自动的。
当主应用程序不再是系统上的当前上下文时,我可以让它关闭吗?
您可以安装本机事件过滤器并在用户单击主窗口时关闭活动弹出对话框(QApplication::activePopupWidget())。有关如何安装本机过滤器的信息,请参阅以下答案。