Rob*_*ley 8 c++ qt qfiledialog
我希望用户能够输入将保存为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);
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 11
由于您从对话框中获取字符串getSaveFileName,您可以执行以下操作:
if (!groupingFile.endsWith(".xml"))
groupingFile += ".xml";
Run Code Online (Sandbox Code Playgroud)
它可能在Linux上有所不同,因为这个小片段隐藏在文档中getSaveFileName:
在Windows,Mac OS X和Symbian ^ 3上,此静态函数将使用本机文件对话框而不是QFileDialog.
换句话说,至少就Qt而言,添加前缀(由本机对话框完成)是异常的.
正如评论中指出的那样,您可能会发现此解决方案的一个问题是,如果您xyzzy手动输入并且文件xyzzy.xml已经存在,对话框本身将不会通知您(假设本机对话框执行此操作 - 我实际上没有检查过).如果您想要这种行为,您也需要实现它.
| 归档时间: |
|
| 查看次数: |
5644 次 |
| 最近记录: |