我有一个Qt应用程序,在某些时候调用QFileDialog::getOpenFileName
。但是,在任何时候我的应用程序都可以获得一个事件,这将使该文件对话框无关紧要,所以我想强行关闭它。
这是我尝试关闭此对话框的方法:
QWidget *modalWidget = QApplication::activeModalWidget();
if (modalWidget)
modalWidget->close();
这适用于Windows,但我在Mac上遇到了奇怪的行为。它不是关闭,而是隐藏对话框。执行永远不会离开QFileDialog::getOpenFileName
调用,因为它是一个模态对话框,底层应用程序将永久冻结。
为了关闭,我最终通过调用本机[NSApp abortModal]
来关闭对话框。
请注意,如果在最近的Qt版本中修复了此问题,则可能不需要此解决方法(自Qt 5.8以来未检查过)。