如何让QFileDialog提示覆盖?

时间:2012-02-14 23:07:10

标签: qt 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)也无济于事。我已经在Utntu 11.04和Windows XP上对Qt 4.7.3和4.7.4进行了测试。

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

我找不到其他人抱怨这不适合他们。我做错了什么,或者这是一个错误?我想这可能是因为对话框不知道它是否只是一个简单的Open对话框,其中提示没有意义,但我没有看到一种方法告诉它它是一个Save对话框(除了设置confirm-overwrite选项,哪个失败了),文档 表示它应该默认提示。

1 个答案:

答案 0 :(得分:5)

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