在 Mac 上单击主窗口时,QDialog as Popup 不会隐藏

Posted

技术标签:

【中文标题】在 Mac 上单击主窗口时,QDialog as Popup 不会隐藏【英文标题】:QDialog as Popup does not hide on Mac when clicking out of the main window 【发布时间】:2012-10-08 17:31:42 【问题描述】:

我有一个基本的 QDialog,它的 WindowFlags 设置为 Qt::Popup,因此它显示为典型的弹出窗口覆盖。 在 Windows 上,一切正常,如果您在主窗口外或其他任何地方单击,它就会消失。但在 Mac OSX 上,如果您单击顶部的菜单栏或调整窗口大小,弹出窗口将停留在原处。我对弹出窗口的鼠标进入/离开/移动/按下事件完全没有内部处理,所以关闭它不是我什至处理的事情......它在 Windows 上只是自动的。

当主应用程序不再是系统上的当前上下文时,我可以让它关闭吗?

【问题讨论】:

当父窗口失去焦点时,它会为我正确隐藏。虽然不是在调整大小或单击标题栏时。是这个意思吗? 【参考方案1】:

您可以安装本机事件过滤器并在用户点击主窗口时关闭活动弹出对话框(QApplication::activePopupWidget())。有关如何安装本机过滤器的信息,请参阅以下answer。

【讨论】:

以上是关于在 Mac 上单击主窗口时,QDialog as Popup 不会隐藏的主要内容,如果未能解决你的问题,请参考以下文章

将输入从 qdialog 传输到主窗口

Python 多处理 - 池

隐藏 qdialog 并显示主窗口

如何从另一个 qdialog 的主窗口访问 ui?

QWidget QMainWindow QDialog 之间的区别

PyQt:如何将选择的 Combobox 值从 QDialog 传递到主窗口?