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

学习C++、QT---23(QT中QFileDialog库实现文件选择框打开、保存讲解)

每日一言

        生活不会亏待认真对待它的人,越努力,越幸运。

QFileDialog文件选择框

现在我们来学习这个QFileDialog

我们的记事本肯定要用文件选择框来选择文件啊,就是我们记事本的这个功能

有 打开,取消,类似这样的一个文件选择框

那么我们怎么实现呢?

QT有一个叫做QFileDialog类,是用于做这个文件选择框的,那么使用方法的话,老样子我们去查看帮助文档

看看,我们就可以根据这个案例我们来进行仿写

首先我搞了三个QPushbutton

tr("Open File"),这个是文件选择框左上角的提示信息

 "E:/qianrushi/QT/QTcodeLesson",这个是打开的路径

  tr("Text (*.txt)"));这个右下角的过滤器,只让选择.txt文件,以提示信息Text

那么我们仿写上去之后,发现

虽然打开了文件选择框,但是选择文件后,直接关闭了,什么事都不做,于是我将fileName进行打印,发现,这个filename是文件的路径,那么根据我们之前的积累,会懂得,那么我们就进行文件的操作,利用QFile类和QTextStream进行将文件读取出来

但是别忘了哈,我们会发现如果出现了中文的乱码我们还是要进行编码的处理setcodec()

那么我们现在是去实现保存的功能

根据这个我们之前的这个打开的案例的印象

我们要去选择这个getSaveFileName这个就是官方给我们写好的案例,点击它

这个就是保存的案例

一样的,就是这个路径上面我们看到一个undefine.txt这个就是我们点击保存的时候默认的名字和后缀,下方有图

那么我们保存的话也是和打开是一样的,原理

现在,我们需要自己去学习这个Dialog,那就是不使用静态函数,自己进行创建一个Dialog,就像我们学习QFile一样也有案例

也都是在帮助文档里面

我们看不懂英文的话一定要像我一样去下载一个翻译器,这样好多了

那么我们根据官方的案例我们自己创建一个Dialog

都是根据案例走的,解释一下吧,首先我们创建了一个QFileDialog对象叫做qfileDialog  ,调用这个setFileMode这个函数是为了通过调用这个函数让我们可以选择哪些文件,这边我们设置的是可以选择多个已存在的文件

这边我们选择的是Existing Files目的是到时候我们可以选择多个文件进行打开,和显示多个文件的内容

 qfileDialog.setNameFilter("Text(*.txt)");这个就是过滤器了,设置为.txt才符合我们的记事本的特性

qfileDialog.exec()这个的话就是等于是运行这个文件选择框的作用,没有这句话,文件选择框就看不到

fileNames = qfileDialog.selectedFiles();

这个selectedFiles()函数返回的是文件路径列表,也就是我们选择了多个文件的话就会都放在列表里面,所以我们要是想要输出路径的话需要遍历列表,

现在这个fileNames就是QStringList类型

 for(QString str : fileNames){

         qDebug()<<str;

         QFile file;

         file.setFileName(str);

         if(!file.open(QIODevice::ReadWrite|QIODevice::Text)){

             qDebug()<< "open error";

         }

         QTextStream in(&file);

         in.setCodec("UTF-8");

         while(!in.atEnd()){

             QString context = in.readLine();

             qDebug()<<context;

         }

    }

}

涨知识:我们使用这个方法将文件的路径和内容都输出出来

这是 C++11 引入的范围 - based for 循环(Range-based for loop),在 Qt 框架中处理QStringList等容器时非常常用。它提供了一种简洁的语法来遍历容器中的每个元素。

for (类型 变量名 : 容器表达式) {

    // 使用变量名访问当前元素}

}

继承关系

  • QList<T>:是 Qt 的通用容器类,用于存储任意类型的对象(模板类)。
  • QStringList:是 **QList<QString>** 的专用子类,专门用于存储字符串(QString)。

我们要牢牢记住

http://www.dtcms.com/a/278005.html

相关文章:

  • 7月13日日记
  • 时间管理四象限理论
  • 小白学Python,操作文件和文件夹
  • 阶段性渗透总结
  • 第五章 Python手写数字识别【CNN卷积神经网络实现】
  • Windows怎样同步时间服务器?
  • 最简约的Windows多标签页文件管理器推荐 - 360文件夹 - 免费开源绿色软件推荐
  • Lucene原理
  • Android自定义View的事件分发流程
  • (33)记录描述窗体组件属性的枚举量 enum Qt :: WidgetAttribute, 简记为 WA_
  • Java结构型模式---外观模式
  • 和 *,以及 -> 和 .
  • C语言基础知识--柔性数组
  • 串口学习和蓝牙通信HC05(第八天)
  • LlamaIndex 检索器 Retriever
  • 题目V^V
  • 008_Claude_Code开发工具
  • 自注意力机制及其与早期注意力机制的区别
  • C++高频知识点(十)
  • Android 响应式编程完整指南:StateFlow、SharedFlow、LiveData 详解
  • 封装---统一封装处理页面标题
  • 关于 java:11. 项目结构、Maven、Gradle 构建系统
  • DAY02:【ML 第一弹】KNN算法
  • Datawhale AI夏令营——用AI预测新增用户学习笔记
  • 【VLLM】大模型本地化部署
  • 【图片识别内容改名】用图片的内容改图片文件的名字,批量OCR识别图片上的文字并同时进行批量改名的操作步骤和注意事项
  • 深入了解JAVA中Synchronized
  • MD5算法深度剖析与可视化解析
  • Kubernetes集群安装
  • Codeforces Round 1032 (Div. 3)(A-G)