我希望用户能够输入将保存为 xml 文件的文件的名称。目前在 Windows 和 Mac 上,如果您输入“test”作为文件名,它会自动添加“.xml”,这就是我想要的。不幸的是,在测试 Linux 版本时,我发现输入不带扩展名的文件名会保存为普通文件。用户必须在文件字符串(即“test.xml”)中指定扩展名,以便以正确的格式保存。
我正在使用的代码如下。这是 Qt 错误还是有一种方法可以在 Qt 中指定它应该添加扩展(如果没有找到扩展)?
// Get value for "dir". If the setting doesn't exist then use
// the the path in "defaultsave.directory"
QString prevPath = prevValues.value("dir", QString::fromStdString(
ConfigService::Instance().getString("defaultsave.directory"))).toString();
QString filter;
filter.append("Files (*.xml)");
filter += ";;AllFiles (*.*)";
QString groupingFile = QFileDialog::getSaveFileName(this, "Save Grouping file as", prevPath, filter);
Since you从对话框中获取字符串getSaveFileName
,你可以这样做:
if (!groupingFile.endsWith(".xml"))
groupingFile += ".xml";
它在 Linux 上可能有所不同,因为这个小片段隐藏在文档中getSaveFileName http://qt-project.org/doc/qt-4.8/qfiledialog.html#getSaveFileName:
在 Windows、Mac OS X 和 Symbian^3 上,此静态函数将使用本机文件对话框而不是 QFileDialog。
换句话说,添加前缀(由本机对话框完成)是异常的,至少在 Qt 方面是这样。
正如评论中指出的,您可能会发现此解决方案存在问题,因为如果您输入,对话框本身不会通知您xyzzy
手动和文件xyzzy.xml
已经存在(假设本机对话框执行此操作 - 我实际上尚未检查)。如果您想要这种行为,您也需要实现它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)