我有一个QDialog,它打开一个QFileDialog:
QFileDialog fd(this);
fd.setFileMode(QFileDialog::AnyFile);
if (fd.exec()) {
// save data to a file
}
很不幸,默认行为似乎并不是真正的默认,如果我选择一个已经存在的文件,文件对话框不会提示我是否要覆盖它。先调用
setConfirmOverwrite(true)
或setOption(QFileDialog::DontConfirmOverwrite, false)
也没有帮助。我在Ubuntu 11.04和Windows XP上都测试了Qt 4.7.3和4.7.4版本。我找到了这个bug报告。虽然
QFileDialog::getSaveFileName()
有这个问题,但它只针对Maemo,并且在Qt 4.7.3发布之前就已经解决了。如果我在我的应用程序中使用该方法,它可以正常工作,我会被提示是否覆盖该文件。(由于其他原因,我不想使用getSaveFileName()
。)我找不到其他人抱怨这个问题没有解决。我是做错了什么,还是这是一个bug?我认为这可能是由于对话框不知道它是否只是一个简单的打开对话框,其中提示是没有意义的,但我看不到告诉它它是保存对话框的方法(除了设置确认覆盖选项失败),而且文档确实说默认情况下应该提示。