当前位置: 首页 > news >正文

QFileDialog的使用

一、使用静态函数(均为模态对话框,会阻塞当前线程直到用户完成操作

//选择一个现有的文件 QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = Options()); //选择多个现有的文件 QStringList getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = Options()); //选择一个现有的目录 QString getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), Options options = ShowDirsOnly); //选择保存的路径(文件可不存在) QString getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = Options());

使用示例:

// 选择单个文件 // 获取当前路径 QString curPath = QDir::currentPath(); // 设置对话框标题 QString dlgTitle = "选择一个文件"; // 设置文件过滤器 QString filter = "文本文件(*.txt);;图片文件(*.jpg *.png);;所有文件(*.*)"; // 弹出对话框 QString aFileName = QFileDialog::getOpenFileName(this, dlgTitle, curPath, filter); // 处理返回结果 if(!aFileName.isEmpty()) { // 使用选中的文件路径 aFileName } // 选择多个文件 QStringList fileList = QFileDialog::getOpenFileNames(this, "选择多个文件", curPath, filter); for (const QString &file : fileList) { // 处理每一个选中的文件 file } // 选择目录 // 使用 ShowDirsOnly 选项使对话框只显示目录 QString selectedDir = QFileDialog::getExistingDirectory(this, "选择目录", curPath, QFileDialog::ShowDirsOnly); // 保存文件 QString saveFileName = QFileDialog::getSaveFileName(this, "保存文件", curPath, "HTML文件 (*.html)"); // 注意:getSaveFileName 不会自动为你保存文件,它只返回用户选择的路径。

二、自定义文件对话框

需要高度自定义(如特定过滤、默认后缀、非原生对话框),可以创建QFileDialog对象,逐一设置属性(setFileMode,setNameFilter,setOption等)

1. 设置文件模式 (FileMode)
fileMode属性定义了用户可以选择的内容类型。

模式 (FileMode)用途描述
AnyFile任何文件(用于“另存为”)
ExistingFile单个现有文件(用于“打开”)
ExistingFiles多个现有文件
Directory目录(显示文件和目录)
DirectoryOnly

仅目录(选取文件时只选中目录)

QFileDialog dialog(this); dialog.setFileMode(QFileDialog::ExistingFiles); // 设置为选择多个文件 // ... 其他设置 ... if (dialog.exec()) 使用 exec() 显示自定义对话框 { QStringList files = dialog.selectedFiles(); //selectedFiles():返回用户所选文件或目录的路径(QStringList)。 //selectedUrls():返回用户所选文件或目录的 URL(QList<QUrl>),适用于处理本地和远程文件。 }

2. 设置过滤器 (Filter)
过滤器用于只显示特定扩展名的文件。多个过滤器用;;分隔。

// 设置多个过滤器 QString filters = "Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"; dialog.setNameFilter(filters); // 或者使用 setNameFilters() 应用多个过滤器,并使用 selectNameFilter() 选择默认过滤器

3. 设置接受模式 (AcceptMode)
决定对话框是用于打开还是保存文件。

dialog.setAcceptMode(QFileDialog::AcceptSave); // 设置为保存模式

4. 设置默认后缀
在保存文件时,如果用户没有输入后缀,会自动添加。

dialog.setDefaultSuffix("png"); // 自动添加 .png 后缀

5. 设置视图模式 (ViewMode)

dialog.setViewMode(QFileDialog::Detail); // 显示详细信息(大小、修改日期等)
http://www.jsqmd.com/news/463279/

相关文章:

  • 2026年气泡膜与气泡袋厂家哪家好:专业制造商西安盛邦深度介绍,涵盖珍珠棉袋子、珠光膜信封袋 - 深度智识库
  • Unreal Engine 4核心概念解析:AIController——AI自主决策引擎与行为树实战
  • Docker如何改变应用构建与部署?从Node.js和Java的Dockerfile看统一制品的革命
  • OpenClaw For Windows本地电脑的快速在线安装部署
  • Freerdp实战指南:解锁开源远程桌面的高效连接与安全配置
  • 洛谷:B2029 大象喝水
  • 活动策划公司怎么找?实用挑选指南,少走弯路更省心 - 麦麦唛
  • 群晖DSM系统突破多网卡限制实战:从双网口到六网口的配置指南
  • 3月6日打卡
  • Oracle EBS(R12+)通过Multi-Org 多组织架构、Multi-Ledger 多账簿、SLA 子分类账会计、多币种引擎、多会计政策并行五大核心能力,为跨国企业提供一体化、自动化、合规的
  • 5分钟搞定Telegram机器人:从创建到发送消息的完整流程(附chatId获取技巧)
  • 装修行业怎么投流才靠谱?博主3年实测,这份选型指南帮你避坑 - 品牌测评鉴赏家
  • comsol底部电磁波频域感应加热物件模型,可以得到物件电磁场及温度场分布,提供comsol详...
  • Oracle EBS R12 Multi‑Ledger 多账簿最清晰、最实战、可直接用于方案 / 宣讲 / 设计文档的深度讲解,只讲核心、不讲废话,完全围绕跨国集团、多准则、多币种、多会计政策场景
  • 2026膜结构及铝合金篷房优质品牌推荐榜 - 优质品牌商家
  • 手机实用技巧大全|让手机更流畅、更省电、更好用,看完立刻变高手!
  • SAP 为跨国企业提供了一套完整、集成、实时的多组织、多帐套、多币种、多会计政策会计核算解决方案,核心是统一数据模型 + 平行分类账 + 多维货币 + 集团合并,在 S/4HANA 中以 ACDOCA
  • 装修行业视频号投流代运营哪家靠谱?2026实测前五榜单,装企/博主闭眼抄 - 品牌测评鉴赏家
  • 【Squid系列007篇】基于 Squid 多节点 CDN 架构:DNS 智能调度与缓存命中率监控体系(扩容完整版・企业级架构师标准)
  • (学习笔记)3.5 算术和逻辑操作(3.5.1 加载有效地址)
  • 华为 MetaERP 是面向跨国企业、支持多组织、多账套、多币种、多会计政策的全栈自主可控国产 ERP,已在华为全球 170 + 国家 / 地区、88 家子公司完成 Oracle 替换,是国产替代跨国
  • VS Code 的安装与如何搭建C/C++开发环境?
  • 高达2070TFLOPS算力|腾视科技基于NVIDIA Jetson Thor系列模组,重磅推出全栈AI边缘智算大脑解决方案
  • 骏马奔腾,服务暖心——2026年深圳市专业殡仪服务机构甄选指南与客观推荐 - 深度智识库
  • 网络安全入门 arp断网
  • 2026装修行业全案投流全解析 精准选对服务商攻略 - 品牌测评鉴赏家
  • 安卓15_ROM修改定制化_____修改settings设置app的常用的修改定制项目 终结篇
  • 极简致美,笃行致远——宏洛图2025-2026化妆品及保健品包装设计美学实践 - 宏洛图品牌设计
  • 千问 文心 元宝 Kimi怎么分享整个对话
  • loTDB数据库