QT 的文件

news2024/11/23 16:45:13

QT 和C++、linux 一样,也有自带的文件系统.

它的操作和C++、c差不多,不过也需要我们来了解一下。

输入输出设备类

QObject 有一个子类,名为 QIODevice 类,如其名字,该类是管理所有输入输出设备的类。

比如文件、网络套接字、蓝牙等,而文件类也是其所管理的类之一。

  •  QFile 类 : 管理文件的类,包括文件的读、写,可以用该类管理任意格式的文件
  • QSaveFile : 用于安全保存文件的类,即当用QSaveFile 保存文件时,它会先将数据写入一个临时文件,成功写完后才将文件写入最终的文件,防止写入途中出错,导致旧文件和新文件都消失
  • QTemporaryFile 类 : 用于创建临时文件的类,使用该类创建一个对象时也会创建一个临时文件,对象销毁时文件也销毁
  • QTcpSocket / QUdpSocket : 分别实现了 TCP 和 UDP 的类
  • QSerialPort :实现了串口通信的类,实现计算机与串口设备的通信
  • QBluetoothScoket : 用于蓝牙通信的类,可以用于实现手机蓝牙的通信
  • QProcess :用于启动外部程序,并且可以传递参数
  • QBuffer : 以QByteArray 的对象作为缓冲区,将该对象当做一个 IO 设备。

QFile 类

该类提供了文件的读、写等方法。

读方法:

  • read() 
  • readLine()
  • readAll()

写方法:

  • write()
  • writeData()

关闭文件

  • close()

打开文件

  • open(openMode)

 和C++类似,想要读或者写一个文件需要先打开文件,而打开文件需要跟上打开文件的方式。

Qt 也设置了文件的打开方式。

  • QIODevice::NotOpen : 没有打开设备
  • QIODevice::ReadOnly : 以只读方式打开设备
  • QIODevice::WriteOnly : 以写方式打开设备
  • QIODevice::ReadWrite : 以读写方式打开设备
  • QIODevice::Append : 以追加的方式打开设备,将数据写到文件末尾
  • QIODevice::Truncate : 每次打开文件重写文件内容,原内容被删除
  • QIODevice::Text : 在读文件时,行尾终止符变为 '\n',而写文件时,行尾终止符则会转化为本地编码.
  • QIODevice::Unbufferd : 无缓冲形式打开文件,绕过设备中的缓冲区
  • QIODevice::NewOnly : 文件存在打开失败,不存在则创建

接着我们来用 QFile 类来实现一个简单的记事本程序。


首先,在 .h 文件中添加需要的槽函数和成员。 

然后在 QMainWindow.cpp 的构造函数中,设置菜单栏和输入框,并且连接好信号和槽函数。 

 

第一个槽函数的作用是打开文件。 

 第二个槽函数的作用是保存文件

运行之后,我们在输入框输入文本,并且在菜单栏中选中保存操作。 

 

由于我们设置的保存文件的路径为程序运行的路径,因此保存的文件在构建文件夹中。

我们设置想要保存在哪个文件中之后,再去对应文件夹中查看即可。

可以看到文件确实保存在构建文件夹中了。 

内容也是没问题的。 

 

然后通过打开菜单栏中的打开文件操作。

 选中 hello.txt 文件后,发现内容也正确读取出来了。

 QFileInfo类

该类是 Qt 一个用于提供文件信息的类,可以通过该类提供的函数查看文件的后缀、类型、名称等属性。

有很多方法,使用的时候可以通过QT文档去搜索,不用死记硬背。

总结

文件类是每个语言都需要使用的类,C++的文件流、linux 的 open、read 、write 、C语言的 fopen、fread等,都是各个语言针对文件所设计的函数,QT 也不例外,希望本文能够对大家有所帮助。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java获取本机IP地址的方法(内网、公网)

起因是公司一个springboot项目启动类打印了本机IP地址加端口号,方便访问项目页面,但是发现打印出来的不是“无线局域网”的ip而是“以太网适配器”ip,如下图所示 这样就导致后续本地起项目连接xxl-job注册节点的时候因为不在同个局域网下ping…

Arcgis投影问题

今天下载数据,右键查看属性,发现只有地理坐标系,在arcgis里面进行展示有点丑 怎么变成下面的? 步骤1:加载数据 打开ArcGIS Pro或ArcMap。在目录窗口中,右键点击“文件夹连接”或“文件夹”选项&#xff0c…

苹果的后来者居上策略:靠隐私保护打脸微软

01.苹果与微软相比更注重用户隐私 我一直是Windows的忠实用户,但微软疯狂地将人工智能融入一切,让我开始觉得应该咬咬牙换成Mac。 自小我几乎只用Windows电脑,所以我对MacOS一直不太适应。虽然Windows 11有其缺点,但总的来说&am…

设计四大基本原则的全面解析

每每问起设计四大基本原则,无论是蜚荣全球的业内大咖还是初出茅庐的张三李四,都会不约而同地告诉你一个答案:亲密性、对齐、重复、对比。 自罗宾威廉姆斯于《写给大家看的设计书》中提出后,四大基本原则涵盖了品牌、电商、包装、…

【数据结构初阶】--- 堆

文章目录 一、什么是堆?树二叉树完全二叉树堆的分类堆的实现方法 二、堆的操作堆的定义初始化插入数据(包含向上调整详细讲解)向上调整删除堆顶元素(包含向下调整详细讲解)向下调整返回堆顶元素判断堆是否为空销毁 三、…

时间同步概念及常见的时间同步协议NTP PTP

一、前言 前面几篇文章介绍了Linux中的各种各样的时间、时钟源以及时间维护的方式,其中在timekeeper等数据结构中,我们当时略过了NTP相关的字段,为了补充这一段内容,从本篇开始会介绍时间同步的基本概念、及常见的时间同步协议&am…

2024年春季学期《算法分析与设计》练习15

问题 A: 简单递归求和 题目描述 使用递归编写一个程序求如下表达式前n项的计算结果&#xff1a; (n<100) 1 - 3 5 - 7 9 - 11 ...... 输入n&#xff0c;输出表达式的计算结果。 输入 多组输入&#xff0c;每组输入一个n&#xff0c;n<100。 输出 输出表达式的计…

定时器介绍之8253芯片

目录 定时器简介 8253功能介绍 组成 工作原理 相关引脚 启动方法 计数方式 实现 读取计数值 定时器简介 8253功能介绍 内部结构 相关引脚 计数器组成 工作原理 启动方法 计数方式 初始化&#xff1a;写入控制字——>写入计数初值 实现 计数长度选择&#xff1a…

Python 全栈系列254 异步服务与并发调用

说明 发现对于异步(IO)还是太陌生了&#xff0c;熟悉一下。 内容 今天搞了一整天&#xff0c;感觉有一个long story to tell&#xff0c;但是不知道从何说起&#xff0c;哈哈。 异步(协程)需要保证链路上的所有环节都是异步(协程)的&#xff0c;任何一个环节没这么做都会导致…

CSS文本超限后使用省略号代替

方案一&#xff1a; 只显示一行&#xff0c;超限后使用省略号代替 .detail {overflow: hidden;text-overflow: ellipsis;white-space: nowrap; }方案二&#xff1a; 显示多行&#xff0c;到最后一行还没有显示完&#xff0c;则最后一行多出来的部分使用省略号代替。 .detai…

如何通过Appium连接真机调试

1、打开appium&#xff0c;点击启动appium服务器&#xff08;如图1&#xff09; 2、appium启动成功后&#xff0c;点击放大镜启动检查会话&#xff08;如图2&#xff09; 3、填写真机设备信息和APP的package、activity,点击启动会话&#xff08;如图3&#xff09; 4、打开运行A…

C#——字典diction详情

字典 字典: 包含一个key(键)和这个key所以对应的value&#xff08;值&#xff09;&#xff0c;字典是是无序的&#xff0c;key是唯一的&#xff0c;可以根据key获取值。 定义字典: new Diction<key的类型&#xff0c;value的类型>() 方法 添加 var dic new Dictionar…

头歌资源库(8)分发饼干

一、 问题描述 二、算法思想 我们可以使用贪心算法来解决这个问题。首先&#xff0c;我们将孩子们的胃口值和饼干的尺寸进行排序&#xff0c;从小到大。然后&#xff0c;我们从最小的胃口值和最小的饼干尺寸开始匹配。 我们使用两个指针i和j&#xff0c;分别指向孩子们的胃口…

电商客服的得力助手:快捷回复软件

随着技术的进步&#xff0c;传统的人工打字已经逐渐不能满足快节奏的电商服务需求。如今&#xff0c;市面上涌现出众多快捷回复辅助软件&#xff0c;它们以高效率的特点&#xff0c;成为电商客服人员的必备工具。 作为一名拥有五年经验的电商客服&#xff0c;我深刻体会到了这类…

“暗蚊”黑产团伙通过国内下载站传播Mac远控木马攻击活动分析

黑客&网络安全如何 1 概述 近期&#xff0c;安天CERT发现一组利用非官方软件下载站进行投毒和攻击下游用户案例&#xff0c;并深入分析了攻击者在网管运维工具上捆绑植入macOS平台远控木马&#xff0c;利用国内非官方下载站发布&#xff0c;以此取得政企机构内部…

WebSocket实现消息实时通知

参考文档&#xff1a;万字长文&#xff0c;一篇吃透WebSocket&#xff1a;概念、原理、易错常识、动手实践、WebSocket 教程 1 背景 有一个需求&#xff0c;需要实现实时通信的功能&#xff0c;如果有新消息&#xff0c;后端会主动发送请求告知前端有新消息&#xff0c;需要前…

最佳 PDF 合并工具评测

PDF是我们官方文档常用的格式。因此&#xff0c;如今处理 PDF 文件是一项非常重要的技能&#xff0c;例如使用 doc 创建 pdf、将 pdf 文件合并为单个 pdf、将 pdf 拆分为多个 pdf 文件、为 pdf 文件添加密码以进行安全分发等等。获得上述技能的关键部分是找到一个简单但功能强大…

YOLOv10项目-服务器上运行

1、前言 2、运行YOLOv10代码流程&#xff08;超详细&#xff09; &#xff08;3&#xff09;根据下面步骤安装&#xff1a; &#xff08;4&#xff09;数据集和其他配置 &#xff08;5&#xff09;测试训练&#xff08;很详细&#xff09; 1、前言 由于一些事情&#xff0…

0617_QT3

练习&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//去掉头部this->setWindowFlag(Qt::FramelessWindowHint);//去掉空白部分this->setA…

第二十篇——去除噪音:如何获得更多更准确的信息?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 噪音的原理&#xff0c;换一个维度来看就会很清晰了&#xff1b;通俗易懂…