如何在QT4 for Windows中创build通用文件select对话框

我一直在这个问题上寻找线索一段时间,没有结果。 所以,这里…

我有一个应用程序,我想有一个简单的button来打开文件对话窗口。 主窗口上还有其他button,用于读取或创build/写入文件(在对所选function进行适当检查之后)。 我曾经使用QFileDialog :: getSaveFileName()函数没有问题,但在Windows 7中,如果文件存在AND是只读的,则失败。 我切换到getOpenFileName()来解决这个问题,但是现在如果用户试图select一个不存在的文件(在保存操作中不相关),文件对话框就会失败。

有没有办法将“创build新文件”图标添加到文件对话框中,或将其添加到文件对话框窗口中的右键菜单? 我真的很讨厌必须重写应用程序,只是因为(又一个)Windows的行为改变。

QFileDialog::getOpenFileName()只能用于打开现有的文件。 如果您键入一个不存在的文件名称,并且系统有抱怨,这是正确的行为。 它正确地告诉你,你不能打开一个不存在的文件。

如果你想写一个现有的文件或创建一个新的文件,你应该使用QFileDialog::getSaveFileName()

如果您正在尝试写入操作系统中标记为“只读”的现有文件,并且出现错误,指出该文件为“只读”,则错误是正确的。 您不应该被允许写入一个只读文件,这正是Read-Only的意思。

从你所解释的,这里没有错误。 一切都发生了,因为它应该是。 如果你试图强制系统做一些不同的事情,不要。 你应该想办法以不同的方式做事。