我有一个 QDialog,可以像这样打开 QFileDialog:
QFileDialog fd(this);
fd.setFileMode(QFileDialog::AnyFile);
if (fd.exec()) {
// save data to a file
}
很遗憾,默认行为 http://developer.qt.nokia.com/doc/qt-4.8/qfiledialog.html#Option-enum似乎并不是那么默认,并且如果我选择已经存在的文件,文件对话框不会提示我覆盖。呼唤setConfirmOverwrite(true) http://developer.qt.nokia.com/doc/qt-4.8/qfiledialog.html#confirmOverwrite-prop or setOption(QFileDialog::DontConfirmOverwrite, false) http://developer.qt.nokia.com/doc/qt-4.8/qfiledialog.html#setOption首先也没有帮助。我已经在 Ubuntu 11.04 和 Windows XP 上的 Qt 4.7.3 和 4.7.4 上进行了测试。
我环顾四周发现这个错误报告 https://bugreports.qt-project.org/browse/QTBUG-11539. QFileDialog::getSaveFileName() http://developer.qt.nokia.com/doc/qt-4.8/qfiledialog.html#getSaveFileName有这个问题,但它是 Maemo 特有的,并且在 Qt 4.7.3 发布之前就已修复。如果我在应用程序中使用该方法,它工作得很好,系统会提示我覆盖该文件。 (我不想使用getSaveFileName()
由于不相关的原因。)
我找不到其他人抱怨这对他们不起作用。我做错了什么,还是这是一个错误?我认为这可能是由于对话框不知道它是否只是一个简单的打开对话框,其中提示没有意义,但我没有找到一种方法来告诉它它是一个保存对话框(除了设置确认覆盖选项之外,失败)和文档does说它应该默认提示。
您还应该确保该对话框处于保存模式,因为它不会认为您在打开模式下覆盖文件。您可以通过致电来做到这一点fd.setAcceptMode(QFileDialog::AcceptSave);
在你的代码示例中。看QFileDialog::acceptMode http://qt-project.org/doc/qt-4.8/qfiledialog.html#acceptMode-prop.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)