一种在Mac上强制关闭模态QFileDialog的方法

时间:2017-01-27 22:03:16

标签: c++ macos qt

我有一个Qt应用程序,在某些时候调用QFileDialog::getOpenFileName。但是,在任何时候我的应用程序都可以获得一个事件,这会使这个文件对话框无关紧要,所以我想强行关闭它。

这是我尝试关闭此对话框的方法:

QWidget *modalWidget = QApplication::activeModalWidget();
if (modalWidget)
    modalWidget->close();

这适用于Windows,但我在Mac上遇到了奇怪的行为。它不是关闭,而是隐藏对话框。执行永远不会离开QFileDialog::getOpenFileName调用,因为它是一个模态对话框,基础应用程序将永久冻结。

1 个答案:

答案 0 :(得分:0)

为了关闭,我最终通过调用本地[NSApp abortModal]关闭了对话框。

请注意,如果此问题已在最近的Qt版本中得到修复(自Qt 5.8起未进行检查),则可能不需要。