QT 的文件

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 也不例外,希望本文能够对大家有所帮助。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试技术(一):软件测试流程

软件测试流程 软件测试流程如下: 测试计划测试设计测试执行 单元测试集成测试确认测试系统测试验收测试回归测试验证活动 测试计划 测试计划由测试负责人来编写,用于确定各个测试阶段的目标和策略。这个过程将输出测试计划,明确要完成的测…

Excel如何设置自动更新的固定选项

日常工作中你是否想要某数据列设置固定选项,如人力组、财务组、综合组、业务组等,可用“数据验证”实现,如后期新增选项“党建组”,该如何快速处理? 今天刘小生分享“超级表数据验证”方式,只实现固定选项…

Java 项目学习(初始化项目)

后端工程基于 maven 进行项目构建,并且进行分模块开发 参考:Spring或Spring Boot项目目录结构划分和代码分层 1、了解项目的整体结构 sky-take-out maven 父工程,统一管理依赖版本,聚合其他子模块 sky-common 子模块&#xff0c…

Maven私服批量上传pom和jar实操

Maven私服上传pom和jar实操-CSDN博客 Maven私服上传jar实操_maven fakepath-CSDN博客 之前写过两篇向maven私服上传jar的操作,看到阅读量还可以,觉得应该有很多人有这个需求,所以这次再放一个大招,通过批量的方式向私服传jar和p…

2024最新版:C++用Vcpkg搭配VS2022安装matplotlib-cpp库

matplotlib-cpp是一个用于在C中使用matplotlib绘图库的头文件库。它提供了一个简单的接口,使得在C中创建和显示图形变得更加容易。这个库的灵感来自于Python的matplotlib库,它使得在C中进行数据可视化变得更加便捷。 matplotlib-cpp允许在C中使用类似Py…

【R语言】数据可视化分析和统计检验——线性和线性混合效应模型

R语言数据可视化分析和统计检验 写在前面1、数据读取及分析2、组间均值和标准差统计分析3、图像数据探索3.1 图像绘制(查看是否存在极端数据,以及数据分布情况)3. 2 数据标准化(Z-scores)3.3 绘制数据相关性 4、ggplot…

杭州电子科技大学2024年成人高等继续教育招生简章

杭州电子科技大学,作为一所享有盛誉的高等学府,始终致力于为社会培养优秀的人才。2024年,学校敞开大门,为广大有志于进一步提升自身学识与技能的成年人提供了难得的机会——成人高等教育招生。 此次招生不仅彰显了杭州电子科技大…

轻量级的数据交换格式JSON (JavaScript Object Notation)介绍

什么是JSON? JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它属于JavaScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 JSON具有易读性&…

FFmpeg+ZLMediaKit 超低延时推流

FFmpeg超低延时推流命令 ffmpeg -rtbufsize 4M -i rtsp://admin:abcd1234192.168.2.162:554/h264/ch1/main/av_stream \-c:v libx264 -preset ultrafast -tune zerolatency -x264-params keyint30:min-keyint30:scenecut0 -g 30 \-c:a aac -b:a 128k -ar 44100 -ac 2 -strict …

微型导轨的摩擦系数分析!

微型导轨的摩擦力主要包括滑动摩擦力和滚动摩擦力,摩擦系数是一个关键参数,它决定了滑块在导轨上运动时所受到的摩擦力大小,摩擦系数越低,系统的运动效率和精度就越高,而微型导轨的摩擦系数是受多个因素影响的。 微型导…

【PL理论】(33) 类型系统:推导树证明 φ ⊢ e∶t | 继续定义关系:γ ⊢ e∶t

💬 写在前面:本章我们将讲解推导树证明,推导树实际上就是推理规则的应用。只要学会如何选择并应用适当的推理规则,证明就不是难事了。 目录 0x00 推导树证明 𝝓 ⊢ 𝒆 ∶ 𝒕 0x01 继续定义关…

振动分析-5-基于CNN的机械故障诊断方法

参考基于CNN的机械故障诊断方法 CNN之图像识别 预训练模型迁移学习(Transfer Learning) 基于卷积神经网络(CNN)的深度迁移学习在声发射(AE)监测螺栓连接状况的应用 参考基于CNN的机械故障诊断所面临的困难和…

护眼指南:精选适合学生写作业的台灯推荐

当前,近视问题在人群中愈发普遍,据2024年的统计数据显示,我国儿童青少年的总体近视率已高达52.7%。在繁重的学业压力下,学生的视力健康日益受到关注,近视背后潜藏着诸多眼部并发症的风险,包括但不限于视网膜脱离、视网…

ATFX汇市:英国5月核心CPI年率下降0.4百分点,GBPUSD不跌反涨

ATFX汇市:据英国统计局数据,英国5月核心CPI年率为3.5%,低于前值3.9%;英国5月名义CPI年率为2%,低于前值2.3%。核心CPI年率和名义CPI年率相比前值分别下降0.4个百分点和0.3百分点,意味着英国的通胀率仍处于快…

Nidhogg:一款专为红队设计的多功能Rootkit

关于Nidhogg Nidhogg是一款专为红队设计的多功能Rootkit,该工具的主要目的是为红队研究人员提供一个多合一的切易于使用的多功能Rootkit,并允许研究人员通过单个头文件来将其引入到自己的C2框架之中。 当前版本的Nidhogg支持任意版本的x64 Windows 10和…

Monaco Editor系列(八)插入自定义DOM、删除指定位置的单词、给特定单词着色

前言:人都不知道自己是谁,所以想让自己成为什么样的人,就多给自己说什么样的话。我爱学习!学习使我快乐!回顾一下上一篇文章的内容。还记得 Monaco Editor 的三个命名空间吗?分别是 editor、languages、wor…

不是所有洗碗机都能空气除菌 友嘉灵晶空气除菌洗碗机评测

精致的三餐让你以为生活是“享受”,可饭后那些油腻的锅碗瓢盆却成了你我美好生活的最大障碍。想要只吃美食不洗碗,那一台优秀的洗碗机就必不可少了!今天,ZOL中关村在线要评测的就是这样一台不光洗得干净更能有效除菌抑菌的洗碗机—…

数据虚拟化、Data Fabric(数据编织)的兴起,对数据管理有何帮助?

数字化时代,虚拟化(Virtualization)并不是一个很陌生的词汇,它是现代数据中心资源管理的核心技术之一,是对 IT 资源(如服务器、存储设备、网络设备等)的抽象,通过屏蔽 IT 资源的物理…

2024年城市规划与创新管理国际会议(UPIM 2024)

2024年城市规划与创新管理国际会议(UPIM 2024) 2024 International Conference on Urban Planning and Innovation Management 【重要信息】 大会地点:苏州 大会官网:http://www.icupim.com 投稿邮箱:icupimsub-conf.c…

打击帮信罪掩隐罪的全渠道交易反欺诈解决方案

结合多年对抗黑灰产的实践经验,芯盾时代利用自主研发的智能风控决策平台(IRD)、账户风险监测系统(ARM)、终端威胁态势感知(MTD)、智能终端密码模块(PMIT)、设备指纹等产品…