QFileDialog文件选择对话框

QFileDialog 类是 Qt 框架中用于处理文件对话框的一个类,它继承自 QDialogQFileDialog 提供了标准的文件选择对话框,使用户能够选择文件或目录。这个类可以用于打开或保存文件,也可以用来选择目录。

主要功能

  • 打开和保存文件QFileDialog 提供了调用标准打开文件对话框和保存文件对话框的方法,使用户可以浏览文件系统,并且选择需要打开或保存的文件。
  • 目录选择:除了文件选择,QFileDialog 还能够用于选择文件夹,对于需要用户指定工作目录等场景非常有用。
  • 过滤器:可以设置文件类型过滤器,仅显示对话框中符合特定模式的文件或目录,提高了用户体验。
  • 视图模式:支持不同的文件视图模式和排序方式,用户可以根据需要调整。

主要方法

  • getOpenFileName()getOpenFileNames():弹出对话框让用户选择一个或多个要打开的文件。
  • getSaveFileName():弹出对话框让用户选择要保存文件的路径和文件名。
  • getExistingDirectory():弹出对话框让用户选择一个目录。
  • setNameFilter():设置对话框显示的文件过滤器,例如仅显示特定扩展名的文件。
  • setViewMode():设置在对话框中文件的显示方式,如列表或详细列表。

示例代码

#include <QFileDialog>
#include <QDebug>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 打开文件对话框选择一个文件QString fileName = QFileDialog::getOpenFileName(nullptr, "Open Image", "/home/user", "Image Files (*.png *.jpg *.bmp)");qDebug() << "Selected file:" << fileName;// 打开对话框选择一个保存文件的位置QString saveFileName = QFileDialog::getSaveFileName(nullptr, "Save File", "/home/user","Text Files (*.txt)");qDebug() << "Save file path:" << saveFileName;return app.exec();
}

这个示例演示了如何使用 QFileDialog 弹出打开文件和保存文件的对话框,以及如何应用文件类型过滤器。

示例代码myself

//简单粗暴用getOpenFileName操作文件选择对话框
void Widget::on_btnFileDialog_clicked()
{//选择需要打开的文件和文件的类型。弹出一个框(单个)QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),"D:/c++QT/lessonDemo/noteBookProject",tr("Text files (*.txt *.doc)"));qDebug()  <<fileName;//打开文本文件QFile file(fileName);if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug()<<"open error";}//读取QTextStream in(&file);in.setCodec("UTF-8");//QString context = in.read(file.size());方法一:按照大小整个读//方法二:如果没到尾部,一行一行的读。while(!in.atEnd()){QString context = in.readLine();qDebug() << context;qDebug() << "=============";//std::cout <<"=========="<<std::endl;}//关闭file.close();
}//分步骤操作文件选择对话框
void Widget::on_btnFDStep_clicked()
{QFileDialog dialog;//打开已经存在的所有文件dialog.setFileMode(QFileDialog::ExistingFiles);dialog.setNameFilter("*.txt");dialog.exec();//选择多个文件,遍历出来(数组)QStringList qstrings = dialog.selectedFiles();for(QString str : qstrings){qDebug() << str;}
}//另存为文件。和写入文件一个逻辑
void Widget::on_btnSave_clicked()
{QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"D:/c++QT/lessonDemo/noteBookProject/untitled.txt",tr("Text (*.txt)"));qDebug()<< fileName;//写入文件QFile file(fileName);if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){qDebug()<<"open error";}QTextStream out(&file);out.setCodec("UTF-8");out << "QDialog Write" ;file.close();
}

打开单个文件
在这里插入图片描述
打开多个文件,数组遍历

在这里插入图片描述
另存为文件
在这里插入图片描述

结论

QFileDialog 是 Qt 中一个非常方便的工具,它使得与用户互动选择文件或目录的任务变得既标准化又简单。通过预定义的静态方法可以快速弹出对话框,并根据用户选择返回所需的文件路径或者目录,极大地简化了文件选择相关的编码工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/261399.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单体微服务K8S笔记

单体微服务K8S笔记 https://blog.csdn.net/m0_48341969/article/details/126063832思路参考以上博客 //测试 https://gitee.com/yangbuyi/yi项目组织参考以上git 单体&#xff1a; 不特地介绍 微服务&#xff1a; rpc:远程过程调用 拆分&#xff0c;分别部署&#xff0…

qtday2作业

思维导图 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;…

如何用微软画图把1280X720的图片压缩成4:3?

最近在看20多年前的电视剧&#xff0c;视频截图是1280X720&#xff0c;比例失调。 如何压缩成4:3&#xff1f; 4 / 3 W / 720 W 720 X 4 / 3 960 打开画图&#xff0c;调整大学和扭曲&#xff08;Ctrl W&#xff09;&#xff0c;依据选择像素&#xff0c;取消保持纵横比…

分享:大数据信用查询去什么样的平台查?

在当今社会&#xff0c;大数据信用查询已经成为企业和个人了解自身信用状况的重要途径。然而&#xff0c;面对众多的大数据信用查询平台&#xff0c;如何选择一个可靠的平台进行查询呢?本文将为您介绍一些选择大数据信用查询平台的关键因素。 一、平台信誉度 首先&#xff0c;…

各种手型都合适,功能高度可定制,雷柏VT9PRO mini和VT9PRO游戏鼠标上手

去年雷柏推出了一系列支持4KHz回报率的鼠标&#xff0c;有着非常敏捷的反应速度&#xff0c;在游戏中操作体验十分出色。尤其是这系列4K鼠标不仅型号丰富&#xff0c;而且对玩家的操作习惯、手型适应也很好&#xff0c;像是VT9系列就主打轻巧&#xff0c;还有专门针对小手用户的…

网站管理新利器:免费在线生成 robots.txt 文件!

&#x1f916; 探索网站管理新利器&#xff1a;免费在线生成 robots.txt 文件&#xff01; 你是否曾为搜索引擎爬虫而烦恼&#xff1f;现在&#xff0c;我们推出全新的在线 robots.txt 文件生成工具&#xff0c;让你轻松管理网站爬虫访问权限&#xff0c;提升网站的可搜索性和…

【Redis】理论进阶篇------浅谈Redis的缓存穿透和雪崩原理

一、缓存穿透 1、概念 缓存穿透&#xff08;查不到数据&#xff09;&#xff0c;是指当用户想要查询数据的时候&#xff0c;会先去Redis中取命中&#xff0c;如果Redis中没有该数据&#xff0c;那么就会向数据库中去查找数据。如果数据库中也没有&#xff0c;则该次查询结果失…

【Effective Objective - C】—— 系统框架

【Effective Objective - C】—— 系统框架 47.熟悉系统框架CoreFoundation框架其他框架要点 48. 多用块枚举&#xff0c;少用for循环for循环使用Objective-C 1.0的NSEnumerator遍历快速遍历基于块的遍历方式要点 49.对自定义其内存管理语义的collection使用无缝桥接要点 50.构…

Vue项目启动过程全记录(node.js运行环境搭建)

一、安装node.js并配置环境变量 1、安装node.js 从Node.js官网下载安装包并安装。然后在安装后的目录&#xff08;如果是下载的压缩文件&#xff0c;则是解压缩的目录&#xff09;下新建node_global和node_cache这两个文件夹。 node_global&#xff1a;npm全局安装位置 node_…

Java并发基础:原子类之AtomicBoolean全面解析

本文概要 AtomicBoolean类优点在于能够确保布尔值在多线程环境下的原子性操作&#xff0c;避免了繁琐的同步措施&#xff0c;它提供了高效的非阻塞算法实现&#xff0c;可以大大提成程序的并发性能&#xff0c;AtomicBoolean的API设计非常简单易用。 AtomicBoolean核心概念 …

消息中间件之RocketMQ源码分析(十二)

Namesrv启动流程 Broker启动流程 BrokerStartup.java类主要负责为真正的启动过程做准备&#xff0c;解析脚本传过来的参数&#xff0c;初始化Broker配置&#xff0c;创建BrokerController实例等工作。BrokerController.java类是Broker的掌控者&#xff0c;它管理和控制Broker的…

openEuler2203 LTS安装并远程桌面接VMware WorkStation Pro 17

openEuler 2203 LTS默认只有命令行&#xff0c;没有GUI图形界面&#xff0c;在其中安装VMware WorkStation需要有图形界面的支持。这里以安装深度的DDE桌面环境&#xff0c;最后通过VNC远程桌面连接Linux服务器操作VMware WorkStation。 以下操作请保持网络能正常连接 1、安装…

react hook使用UEditor引入秀米图文排版

里面坑比较多&#xff0c;细节也比较多 以下使用的是react 18 ice3.0&#xff0c;使用其他react脚手架的配置基本相同&#xff0c;例如umi4 1.下载UEditor 进入UEditor仓库&#xff0c;找到版本v1.4.3.3&#xff0c;点击进去 接着下载ueditor1_4_3_3-utf8-jsp.zip版本 下载好…

MySQL 8.0.36 WorkBench安装

一、下载安装包 百度网盘链接&#xff1a;点击此处下载安装文件 提取码&#xff1a;hhwz 二、安装&#xff0c;跟着图片来 选择Custom,然后点Next 顺着左边框每一项的加号打开到每一个项的最底层&#xff0c;点击选中最底层的项目&#xff0c;再点击传过去右边的绿色箭头&a…

静态时序分析:SDC约束命令set_drive详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 本章将讨论使用set_drive命令&#xff0c;它用于对输入端口的驱动能力建模。首先需要说明的是&#xff0c;默认情况下&#xff0c;DC在STA时默认输入端口的转换时间是0&#xff0c;这对于…

汇总利用YOLO8训练遇到的报错和解决方案(包含训练过程中验证阶段报错、精度报错、损失为Nan、不打印GFLOPs)

一、本文介绍 本文为专栏内读者和我个人在训练YOLOv8时遇到的各种错误解决方案&#xff0c;你遇到的问题本文基本上都能够解决&#xff0c;同时本文的内容为持续更新&#xff0c;定期汇总大家遇到的问题已经一些常见的问题答案&#xff0c;目前包含的问题已经解决方法汇总如下…

【Face Fusion】vs【Rope Opal】

文章目录 &#xff08;一&#xff09;简要说明&#xff08;1.1&#xff09;关于Face Fusion&#xff08;1.2&#xff09;关于Rope Opal &#xff08;二&#xff09;简要对比&#xff08;2.1&#xff09;对比表格&#xff08;2.2&#xff09;部分效果展示&#xff08;2.2.1&…

npm run dev和npm run serve两个命令的区别

npm run dev和npm run serve两个命令的区别 前端开发过程中运行Vue项目的时候&#xff0c;有时候使用npm run serve命令可以启动项目&#xff0c;有时候却会报错&#xff1b;有时候使用npm run dev命令可以启动项目&#xff0c;有时候却也会报错。是什么原因造成这种情况呢&am…

探秘SuperCLUE-Safety:为中文大模型打造的多轮对抗安全新框架

探秘SuperCLUE-Safety&#xff1a;为中文大模型打造的多轮对抗安全新框架 进入2023年以来&#xff0c;ChatGPT的成功带动了国内大模型的快速发展&#xff0c;从通用大模型、垂直领域大模型到Agent智能体等多领域的发展。但是生成式大模型生成内容具有一定的不可控性&#xff0…

在Win系统部署WampServer并实现公网访问本地服务【内网穿透】

目录 推荐 前言 1.WampServer下载安装 2.WampServer启动 3.安装cpolar内网穿透 3.1 注册账号 3.2 下载cpolar客户端 3.3 登录cpolar web ui管理界面 3.4 创建公网地址 4.固定公网地址访问 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0…