首页 > 其他分享 >qt深入解析

qt深入解析

时间:2024-10-13 21:43:14浏览次数:1  
标签:文件 const qt 深入 QString IO bool QIODevice 解析

1.Qt IO

设备类型:

  • 顺序存储设备:如网卡。。
  • 随机存储设备:如.txt..

Qt中IO设备继承图

 Qt中的文件系统

通用开发库,跨平台

QIODevice IO父类,提供字节块读写通用操作和基本接口

QFileDevice提供文件操作通用实现

QFile访问本地文件或嵌入资源

QTemporayFile创建和访问本地系统的临时文件

QBuffer读写QbyteArray,内存文件

QProcess运行外部程序,处理进程间通讯

QAbstractSocket所有套接字类的父类

QTcpSocket TCP协议网络数据传输

QUdpSocket 传输UDP报文

QSslSocket 使用SSL/TSL传输数据

同步IO/异步IO

异步IO也就是重叠(overlap)IO

QIODevice

QIODevice是抽象的,不能被实例化,提供抽象接口

 

QIODevice是区分两种设备的:随机访问设备,顺序设备

随机访问设备:支持通过()查找任意位置。文件当前位置通过pos()获取。例:QFile,QBuffer

顺序设备:不支持寻找任意位置。数据必须在一次传递中获取。pos()和size()不适用于顺序设备。例:QTcpSocket,QProcess

可以使用isSequential()来确定设备类型

 

数据可用时,QIODevice发出readyRead()。可以使用bytesAvailable()确定可供阅读的字节数。

QIODevice向设备写入数据fwrite时会发出bytesWritten()信号。使用bytesToWrite()来确定等待写入的当前数据大小。

QIODevice某些子类是异步的,如QTcpSocket,QProcess,诸如write()和read()之类的输入输出函数总是立即返回的。

 

QIODevice提供了一些功能,允许您立即执行这些操作,同事阻塞调用线程,而不需要进入时间循环。

waitForReadyRead() 在调用线程中暂停操作,知道新的数据可用来读取

waitForBytesWritten() 在调用线程中挂起操作,直到将数据的一个有效负载写入到设备

waiFor....() QIODevice的子类实现特定于设备的操作的阻塞函数

QDir

获取当前目录

[static] QString QDir::currentPath() //取得当前项目所在的目录

[static] QString QCoreApplication::applicationDirPath() //取得exe文件(在windows系统中)所在的目录

切换到当前文件父目录

bool QDir::cdUp()

 absolutePath()获取绝对路径

得到所有文件信息

QStringList:: QDir::entryList()//返回该目录下所有文件及文件夹名字的列表

QFileInfoList QDir::entryInfoList()//返回该目录下所有文件和文件夹信息的列表

 

QDir mDir("D:/qttest")

mDir.exits();//文件是否存在

mDir.absolutePath("a.txt")//返回指定目录下指定文件的绝对路径

mDir.dirName();//剥离掉路径,只返回目录的名字

 

QFile

bool QFile::open(OpenMode mode)

参数:决定文件以何种方式打开

QIODevice::ReadOnly,WriteOnly(只写,打开时原内容清空,文件不存在则创建),ReadWrite,Append,Truncate(重写方式打开,文件原有内容全部清空),Text(文本方式打开'\n'翻译为换行符,写入时,将行结束符转换成本地格式)

close();//关闭文件

read();//读文件,参数为读取的长度大小(必填)fread

readLine();//读取一行

readAll();//读取所有

write();//向文件中写入数据

atEnd();//判断是否到达文件尾

seek();//将文件指针定位到指定位置处

pos();//获取文件指针当前位置

 

bool QFile::copy(const QString &newName)//文件复制

bool exits() const;//文件是否存在

bool link(const QString &linkName)//创建连接(快捷方式)

bool remove()//删除一个文件

bool rename(const QString &newName)//重命名

void setFileName(const QString &name) //设置文件名

//静态成员

bool copy(const QString &fileName, const QString &newName)

bool setPermissions(const QString &fileName, Permission permissions)

Permissions permissions(const QString &fileName)

 

使用流程:

1.QFile创建一个文件对象

2.open()打开这个文件

3.可以使用QFileInfo获取有关该文件的信息

或者进行读写操作

QFileInfo有很多函数:

isDir();

isExecutable()//是否是可执行文件

baseName()//直接获得文件名

completeBaseName()//获取完整文件名

suffix()//直接获取文件后缀名

completeSuffix()//获取完整的文件后缀

标签:文件,const,qt,深入,QString,IO,bool,QIODevice,解析
From: https://www.cnblogs.com/Zhaolongtao/p/18372395

相关文章

  • 《深入理解分布式事务与Seata解决方案》
    分布式事务-重要1.数据库的事务1、事务概念事务是一个完整的,不可分割操作单元。整个事务要么全部执行成功,要么全部执行失败。事务具备4个特性:ACIDA:原子性【】C:一致性【数据的一致性:事务开始前和事务结束后,数据总量不变】I:隔离性【事务相互隔离,互不影响】D:持久性【事务一......
  • 滚雪球学Redis[3.3讲]:Redis数据持久化深入探讨:从 AOF 到混合持久化的演进
    全文目录:前言混合持久化1.RDB与AOF之间的权衡2.混合持久化的工作原理工作机制详解3.配置与实践实例演示4.实际应用中的案例分析5.深入探讨混合持久化的优势与局限6.扩展思考:如何选择Redis的持久化策略?总结附:案例与代码配置文件示例:测试代码:模拟数据恢复:下......
  • 186道C++面试八股文(答案、分析和深入提问)整理
    1.全局变量和局部变量有什么区别?操作系统和编译器是怎么知道的?回答全局变量和局部变量在C++中有几个主要的区别:1.作用域(Scope)全局变量:定义在所有函数外部,可以在所有函数和代码块中访问。其作用域是整个程序,直至程序结束。局部变量:定义在函数或代码块内部,只能在该函......
  • 五大项目管理图表工具推荐,功能与应用解析
    本文介绍了五大项目管理图表工具:甘特图、看板图、任务管理图、资源利用图和项目进展图,并讨论了它们的特点、适用场景及选择建议。合适的图表工具能提升项目管理效率和成功率。第一部分:五大项目管理图表工具1.甘特图说到项目管理图表工具,甘特图绝对是常青树。甘特图起源于20世......
  • WeNet与FunASR对比:全面解析
    目录1.项目背景2.技术架构3.识别性能4.模型训练与优化5.应用场景与部署6.社区与生态7.未来发展总结随着语音识别技术的快速发展,越来越多的开源语音识别框架涌现,其中WeNet和FunASR都是备受关注的项目。它们都提供了强大的语音识别功能,但在架构设计、技术细节、......
  • Qt/C++开源控件 圆形进度条
    Qt/C++开源控件圆形进度条简约风格:设计简洁,没有多余的元素,清晰地显示了当前进度。颜色对比:使用了亮色的蓝色来标示进度,与深色背景形成鲜明对比,使得进度指示一目了然。清晰的刻度:刻度线清晰,尽管没有标注所有数字,但通过较长的刻度线在50和100的位置,用户可以很容易地估计......
  • Qt/C++音视频开发-多级连保存和推流设计
    Qt/C++音视频开发-多级连保存和推流设计介绍多级连保存和推流设计是一种将音视频内容同时保存到多个文件或推流到多个平台的技术。这种设计能够增加数据冗余、提高访问速度,确保数据安全性,并且可以实现同时在多个平台上进行直播,提高内容的覆盖面和用户体验。应用使用场景......
  • 系统开发基础错题解析二【软考】
    目录前言1.人机界面设计2.架构设计2.1管道过滤器体系2.2仓库风格3.软件测试相关概念4.白盒测试用例4.14.25.测试分类与阶段任务划分6.软件维护类型7.软件质量保证8.软件过程改进前言本文专门用来记录本人在做软考中有关系统开发基础的错题,我始终认为教学相长是最快......
  • Qt开发技巧(十六):文本框的光标处理,数据库的int在视图中展示问题,工程文件中区分系统及硬
    继续讲一些Qt开发中的技巧操作:1.文本框的光标处理正常情况下我们在文本框中输入,光标会一直伴随着我们的输入指向最后,有点像链表的next指针,但有时候文本框中的内容过长,而我们想要主动设置下将光标移到最前面的时候,可以用下面方法。//下面三种方法都可以//1.样式表方式设......
  • 【C语言基础】全局变量与局部变量的深入解析
    目录一、全局变量1.1.定义与声明1.2.特性1.2.1.生命周期1.2.2.作用域1.2.3.跨文件访问1.2.4.限制访问范围1.3. 示例1.4.注意事项1.4.1.过度使用全局变量导致代码难以理解和维护1.4.2.限制全局变量的使用范围1.4.3.清晰的命名和文档1.4.4.考虑替代方案......