有没有办法在 Linux 上使用 QFileDialog 自动向文件添加扩展名

2024-04-12

我希望用户能够输入将保存为 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(使用前将#替换为@)

有没有办法在 Linux 上使用 QFileDialog 自动向文件添加扩展名 的相关文章

  • 检查列表是否包含另一个列表。 C#

    编辑 只是说 ContainsAllItem 中的注释解释得最好 很抱歉问这个问题 我知道以前有人问过这个问题 但我只是不明白 好的 所以我想检查一个列表是否包含另一个列表中的所有项目WITHOUT重叠 以及根据类字符串 名称变量 称为项目
  • 如何为 Windows 安装开源 Qt 库 5 二进制版本

    这个问题具体是关于Qt libraries 5 0 0 for Windows VS 2010 406 MB at http qt project org downloads http qt project org downloads 但我
  • rand() 播种与 time() 问题

    我很难弄清楚如何使用 rand 并使用 Xcode 用 time 为其播种 我想生成 0 到 1 之间的随机十进制数 该代码为我提供了元素 1 和 2 看似随机的数字 但元素 0 始终在 0 077 左右 有什么想法吗 我的代码是 incl
  • 如何在 Windows 窗体中运行屏幕保护程序作为其背景?

    如何在 Windows 窗体中运行屏幕保护程序作为其背景 用户还可以在屏幕保护程序运行时与表单控件进行交互 为什么这个 我们有一个案例 需要在用户时运行 Windows Bubbles 屏幕保护程序 可以继续与表单控件交互吗 您可以使用以下
  • F10键没被抓住

    I have a Windows Form and there overriden ProcessCmdKey However this works with all of the F Keys except for F10 I am tr
  • 特定设备的不同字体大小

    我目前正在开发通用应用程序 我需要分别处理移动设备和桌面的文本框字体大小 我找到了一些方法 但都不能解决问题 使用 VisualStateManager 和 StateTrigger 为例
  • 为什么重载方法在 ref 仅符合 CLS 方面有所不同

    公共语言规范对方法重载非常严格 仅允许根据其参数的数量和类型来重载方法 如果是泛型方法 则根据其泛型参数的数量进行重载 根据 csc 为什么此代码符合 CLS 无 CS3006 警告 using System assembly CLSCom
  • 数据损坏 C++ 和 Python 之间的管道

    我正在编写一些代码 从 Python 获取二进制数据 将其通过管道传输到 C 对数据进行一些处理 在本例中计算互信息度量 然后将结果通过管道传输回 Python 在测试时 我发现如果我发送的数据是一组尺寸小于 1500 X 1500 的 2
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • 如何不在类中实现接口的功能?

    面试时面试官问了我以下问题 但我不知道这个问题的答案是什么 请帮忙 如果我不想 我必须做什么 在我的类中实现一个函数 在接口中声明为 由我班实施 Edited 我正在使用 NET 和 C 如果有人可以提供 C 示例代码示例 那就太好了 Th
  • 如何在 VS Code 中为 CMake 项目设置 C/C++ IntelliSense?

    我正在尝试使用 libTooling 编写一个工具 我对其进行了设置 以便它可以使用 LLVM 文档中的示例进行编译 然而 C C IntelliSense 似乎不适用于 CMake 项目 我的工具位于
  • realloc():重新分配为 char * 上的 strcat 腾出空间时下一个大小无效 [重复]

    这个问题在这里已经有答案了 我在以下代码中收到无效内存错误 printf s n FINE 5 printf s LENGTH IS d n FINE 6 strlen buffer char realloc buffer strlen b
  • 有没有更好的方法来获取每个项目与谓词匹配的子序列?

    假设我有一个 IEnumerable 例如 2 1 42 0 9 6 5 3 8 我需要获得与谓词匹配的项目的 运行 例如 如果我的谓词是 bool isSmallerThanSix int number 我想得到以下输出 2 1 0 5
  • 微软语音识别速度

    我正在使用微软的语音识别器开发一个小型练习应用程序 对于我正在做的事情来说 我似乎无法让它足够快地识别单个单词 我希望能够正常说话 系统将从我所说的内容中抓取 关键字 并生成一个字符串 目前我正在使用 5 个单词的自定义语法 红 蓝 黄 绿
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • 程序退出后,TcpListener Socket 仍处于活动状态

    当我的程序退出时 我试图停止 TCP 侦听器 我不关心套接字或任何活动客户端套接字上当前活动的任何数据 套接字清理代码本质上是 try myServer Server Shutdown SocketShutdown Both catch E
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D
  • 如何从函数返回矩阵(二维数组)? (C)

    我创建了一个生成宾果板的函数 我想返回宾果板 正如我没想到的那样 它不起作用 这是函数 int generateBoard int board N M i j fillNum Boolean exists True initilize se

随机推荐

  • 如何为 Debian/Ubuntu 打包 Mono 应用程序

    是否有任何用于为 Debian Ubuntu 打包 Mono 应用程序的指南或工具 比如将应用程序附带的程序集放在哪里等 Mono 有一些关于打包的一般准则 但这些准则并非特定于 Debian Ubuntu 它们的做法可能有所不同 http
  • C:将x86指令放入数组并执行它们[重复]

    这个问题在这里已经有答案了 有没有办法将处理器指令放入数组中 使其内存段可执行并将其作为简单函数运行 int main char myarr 13 0x90 0xc3 void myfunc void myarr myfunc return
  • Google Calendar API - 通过服务帐户访问自己的日历

    我想访问 Google Calendar API 以使用 Python 插入条目 我创建了一个服务帐号在Google API控制台上 添加私钥 下载它 但是 当我尝试修改同一帐户上的任何日历时 我收到以下错误消息 读书作品 Code is
  • scala 框架中支持 PostgreSQL 特定的 array_agg 函数吗?

    是否有一些 scala 关系数据库框架 anorm squeryl 等 使用类似 postgres 的聚合器在分组后生成列表 或者至少模拟其使用 我期望有两个层次的实施 一个 标准 的 其中至少任何带有 array agg 的 SQL 分组
  • 我的 Rails 应用程序的捆绑包安装冻结

    有时 在使用 Rails 应用程序时 运行bundle install命令在处理 Rails Gemfile 时冻结 我尝试过清除缓存 但没有任何改善 请务必仔细检查并确保您声明的是 Rails 版本 如果不声明版本 Bundler 最终可
  • 将值传递给 Android 中的自定义视图

    Cheers 我有一个接收用户输入 2 个数字 宽度和高度 的应用程序 理论上根据该输入 我有一个应该绘制网格 宽度和高度 的自定义视图 Note 应在视图尝试绘制自身之前接收这两个值 这两个值不是恒定的 因此我认为 XML 方法没有帮助
  • 在 R 中使用 igraph 获取连接组件

    我想找到一张图的所有连接组件 其中组件具有多个元素 使用clusters给出不同集群的成员资格并使用cliques不给出连通分量 这是后续 R中列表的多重交集 https stackoverflow com questions 304065
  • C++ #include 语义

    这是同一预处理指令的多个问题 1 或 除了 MSDN 中找到的信息之外 include 指令 C C https msdn microsoft com en us library 36k2cdd4 aspx 1 a 这两种表示法有什么区别
  • 使用 java Spark 从 csv 读取列

    我尝试用java和spark读取csv 现在我这样做 String master local 2 String csvInput home username Downloads countrylist csv String csvOutpu
  • 单线程使用不同的连接参数写入不同的数据库

    我正在开发一个项目 其中不同的数据库中有三个具有不同模式的表 这意味着我有三个不同的连接参数来使用 JDBC 连接这三个表 让我们假设 对于表1 Username A Password B URL C Columns ID1 String
  • 使用 OpenSSL 进行加密,方式与 Java 相同

    我必须使用 bash 脚本加密字符串 就像使用 javax crypto Cipher 加密一样 在java中 我使用AES 256和密钥 0123456789 但是当我使用openssl时 我必须将 0123456789 转换为十六进制
  • 将图片插入 JTextPane

    在我的记事本应用程序中 我尝试添加图像 就好像它是JLabel into a JTextPane通过单击JMenuItem called Picture private class Picture implements ActionList
  • 如何向我的服务器添加线程?

    我是 Java 初学者 我有一个任务是构建 P2p 文件共享 Java 应用程序 我首先创建服务器和客户端 客户端可以向服务器发送消息 服务器做出响应 我相信下一步应该是将线程插入服务器类中 我阅读了所有相关内容并尝试了它 但我就是无法成功
  • 以编程方式比较图像 - lib 或类 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用Windows安全描述符来阻止执行其他应用程序?

    在我最近关于使用 CreateDesktop API 调用创建新桌面并在其中执行我自己的应用程序并防止其他应用程序在我的桌面中执行的问题之一中 有人指出我使用安全描述符 这里有人可以告诉我该怎么做吗 提前致谢 所有命名对象 包括您创建的桌面
  • 如何知道 QLineEdit 是否获得焦点?

    我想知道是否在QLineEdit一声点击 所以我想我应该重新实现以下函数 void QLineEdit focusInEvent QFocusEvent e virtual protected 我该怎么做呢 另外请告诉我如何使用focusI
  • 在Python中更改文件头的有效方法

    我正在尝试编写一个 python 脚本来更新一些大文件的标头 仅第一行 但是由于新标头不必与原始标头的大小 以字节为单位 相同 无论如何我可以更改标题而不触及大文件的其余部分 或者我必须通读所有内容并将它们写回文件 不 您可以在不触及整个文
  • Ember 中可靠的视图

    我有一个列出专辑的应用程序 当同时点击专辑时AlbumView and App overlay 也是一个视图 被显示 App overlay Ember View create 类似灯箱的叠加 and App AlbumView Ember
  • 从不同线程写入相邻的数组元素?

    是否有任何现代的常见 CPU 从不同线程同时写入数组的相邻元素是不安全的 我对 x86 特别感兴趣 您可能会认为编译器不会做任何明显荒谬的事情来增加内存粒度 即使它在技术上符合标准 我对编写任意大结构的情况感兴趣 而不仅仅是本机类型 Not
  • 有没有办法在 Linux 上使用 QFileDialog 自动向文件添加扩展名

    我希望用户能够输入将保存为 xml 文件的文件的名称 目前在 Windows 和 Mac 上 如果您输入 test 作为文件名 它会自动添加 xml 这就是我想要的 不幸的是 在测试 Linux 版本时 我发现输入不带扩展名的文件名会保存为