我有一个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 report。 QFileDialog::getSaveFileName()
有这个问题,但它是特定于Maemo并在Qt 4.7.3出现之前修好。如果我在我的应用程序中使用该方法它工作得很好,我得到有关覆盖文件的提示。 (出于无关原因,我不想使用getSaveFileName()
。)
我找不到其他人抱怨这不适合他们。我做错了什么,或者这是一个错误?我想这可能是因为对话框不知道它是否只是一个简单的Open对话框,其中提示没有意义,但我没有看到一种方法告诉它它是一个Save对话框(除了设置confirm-overwrite选项,哪个失败了),文档 表示它应该默认提示。
答案 0 :(得分:5)
您还应该确保对话框处于保存模式,因为在开放模式下它不会认为您正在覆盖文件。您可以在代码示例中调用fd.setAcceptMode(QFileDialog::AcceptSave);
来执行此操作。请参阅QFileDialog::acceptMode。