一种在 Mac 上强制关闭模态 QFileDialog 的方法
Posted
技术标签:
【中文标题】一种在 Mac 上强制关闭模态 QFileDialog 的方法【英文标题】:A way to forcefully close modal QFileDialog on Mac 【发布时间】:2017-01-27 22:03:15 【问题描述】:我有一个 Qt 应用程序,它有时会调用 QFileDialog::getOpenFileName
。但是,在任何时候我的应用程序都可能收到一个事件,这将使该文件对话框无关紧要,所以我想强制关闭它。
这是我尝试关闭此对话框的方式:
QWidget *modalWidget = QApplication::activeModalWidget();
if (modalWidget)
modalWidget->close();
这适用于 Windows,但我在 Mac 上遇到奇怪的行为。它不是关闭,而是隐藏对话框。执行永远不会离开QFileDialog::getOpenFileName
调用,因为它是一个模态对话框,所以底层应用程序会永久冻结。
【问题讨论】:
您可能需要避免调用 QFileDialog::getOpenFileName() 而是手动创建一个 QFileDialog 对象并显示()它。 【参考方案1】:为了关闭,我最终通过调用原生 [NSApp abortModal]
关闭了对话框。
请注意,如果此问题在最近的 Qt 版本中已修复(自 Qt 5.8 以来未检查),则可能不需要此解决方法。
【讨论】:
以上是关于一种在 Mac 上强制关闭模态 QFileDialog 的方法的主要内容,如果未能解决你的问题,请参考以下文章