qt - 如何让 QFileDialog 提示覆盖?

标签 qt qt4 qfiledialog

我有一个像这样打开 QFileDialog 的 QDialog:

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 report . QFileDialog::getSaveFileName() 有这个问题,但它是 Maemo 特有的,并且在 Qt 4.7.3 出来之前就已经修复了。如果我在我的应用程序中使用该方法,它工作得很好,我会收到关于覆盖文件的提示。 (出于不相关的原因,我不想使用 getSaveFileName()。)

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

最佳答案

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

关于qt - 如何让 QFileDialog 提示覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9285575/

相关文章:

qt - Qt:在每次编译时强制重新加载资源

c++ - getOpenFileName - 预选上次打开的文件不起作用

macos - QFileDialog 不适用于 OSX 和 Qt 5.7 中的标签

c++ - 共享 Lua 脚本的安全性

qt - QDateTime自定义格式转义符号

c++ - 仅使用 600 MB 内存时调整 QByteArray 的大小会抛出 std::bad_alloc

c++ - 如何使用 CMake 项目在 Qt Creator 中添加一个类?

c++ - Qt在ComboBox1的基础上改变ComboBox2

python - 在 QFileDialog 上选择文件后 PyQt5 应用程序关闭

qt - 如何按模型设置 QTableView 列的宽度?