【发布时间】:2014-09-03 08:25:24
【问题描述】:
我需要在应用程序的测试中处理并关闭 QFileDialog。 调用的对话框:
QFileDialog::getOpenFileName( ... );
在测试中,我通过以下方式“捕捉”此对话框:
QApplication::topLevelWidgets();
然后我通过 QFileDialog API 选择需要的文件。
现在我应该关闭对话框以从 QFileDialog::getOpenFileName(); 获得有效的答案(文件名); 但是QDilaog的slots没有效果(accept(), reject(), close()...)。对话框保持打开状态。
here 描述的解决方案有效,但在我的情况下它不是选项。我必须使用标准对话框。
有没有办法正确关闭它?
【问题讨论】:
-
Then I choose need file by QFileDialog API.。您真的在对话框的 GUI 中看到您的更改吗? -
你使用什么 Qt 版本?我在问,因为我正在查看 4.8 源,它根本没有创建 QFileDialog(它创建了一个假的
QDialog代替)。那么如何使用 API 呢? -
是的 - 正确选择了目录和文件!
-
只需调用 QFileDialog::getOpenFileName(nullptr, message, QString(), mask);
-
但是您说您通过
topLevelWidgets找到了对话框,然后通过API 选择了一个文件。这意味着您使用的是指针而不是静态 API。否则你不需要找到对话框。
标签: qt