2012-02-14 51 views
3

我有打开一个QFileDialog像这样一个QDialog的:如何获取QFileDialog以提示覆盖?

QFileDialog fd(this); 
fd.setFileMode(QFileDialog::AnyFile); 

if (fd.exec()) { 
    // save data to a file 
} 

不幸的是,the default behavior似乎并没有被这么默认情况下,该文件对话框不提示我关于覆盖,如果我选择一个文件已经存在。首先调用setConfirmOverwrite(true)setOption(QFileDialog::DontConfirmOverwrite, false)也没有帮助。我已经在Ubuntu 11.04和Windows XP上对Qt 4.7.3和4.7.4进行了测试。

我环顾四周,发现this bug reportQFileDialog::getSaveFileName()有这个问题,但它是特定于Maemo并且在Qt 4.7.3出来之前已经很好的修复了。如果我在我的应用程序中使用该方法,它工作得很好,我得到有关覆盖文件的提示。 (因为不相关的原因,我不想使用getSaveFileName())。

我找不到任何人抱怨这不适合他们。我做错了什么,或者这是一个错误?我认为这可能是由于对话框不知道它是否仅仅是一个简单的打开对话框,其中提示没有意义,但我没有办法告诉它它是一个保存对话框(除了设置确认覆盖选项之外,其中失败),并且文档确实说它应该默认提示。

+1

我有与Qt 4.8.0相同的问题 – 2012-05-03 20:13:27

回答

5

您还应该确保该对话框处于保存模式,因为在打开模式下它不会认为您正在覆盖文件。您可以通过在您的代码示例中调用fd.setAcceptMode(QFileDialog::AcceptSave);来完成此操作。见QFileDialog::acceptMode

+0

这是完美的,谢谢!不知道我是如何错过它的。我希望你注册你的SO帐户并坚持到底:) – 2013-03-14 16:15:41