qt深入解析

news/2024/10/13 21:57:14

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()//获取完整的文件后缀

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

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

相关文章

安装WSL2

1.简介 SWL2是windows平台上的linux系统,有一定的优点和限制,最差的一点就是网络了,只能使用NAT相似的技术,不能完全替代虚拟机. 官网资料很详细了,也不是太多,这里只是提供快速入门. 2.初始安装 2.1.打开虚拟平台和WSL2.2.installl wsl2 #1.设置wsl版本 PS C:\Users\pc> ws…

这是我见过最通俗易懂的SVD(奇异值分解)算法介绍

线性代数是机器学习领域的基础,其中一个最重要的概念是奇异值分解(SVD),本文尽可能简洁的介绍SVD(奇异值分解)算法的基础理解,以及它在现实世界中的应用。 SVD是最广泛使用的无监督学习算法之一,它在许多推荐系统和降维系统中居于核心位置,这些系统是全球公司如谷歌、…

.NET云原生应用实践(二):Sticker微服务RESTful API的实现

本章目标完成数据访问层的基本设计 实现Sticker微服务的RESTful API引言:应该使用ORM框架吗? 毋庸置疑,Sticker微服务需要访问数据库来管理“贴纸”(也就是“Sticker”),因此,以什么方式来存储数据,就是一个无法绕开的话题。如果你遵循领域驱动设计的思想,那么你可以说…

《深入理解分布式事务与Seata解决方案》

分布式事务-重要 1.数据库的事务 1、事务概念 事务是一个完整的,不可分割操作单元。 整个事务要么全部执行成功,要么全部执行失败。 事务具备4个特性:ACID A:原子性【】 C:一致性【数据的一致性:事务开始前和事务结束后,数据总量不变】 I:隔离性【事务相互隔离,互不影…

高效工单系统推荐与性价比分析

好用工单系统需用户友好、功能强大、多渠道支持等。ZohoDesk性价比高,满足各企业需求,提供多种版本,支持多渠道、自动化及数据分析,性价比高,适合不同规模企业使用。一、什么样的工单系统好用 1. 用户友好 一个好用的工单系统首先要具备用户友好的界面和操作流程。这包括简…

代码审计[二] [GYCTF2020]Easyphp

代码审计 做的好难受的一道反序列化 [GYCTF2020]Easyphp 参考[GYCTF2020]Easyphp-CSDN博客 查看整个网站,尝试弱口令登录,不行。猜网页,register、upload都试了一下,发现www.zip可以下载网页源码。 login.php <?php require_once(lib.php); ?> <?php $user=ne…

2024-2025第一学年 20241410苏尚君《计算机基础与程序设计》第三周学习总结

这个作业属于哪个课程 (2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 (2024-2025-1计算机基础与程序设计第三周作业这个作业的目标 门电路,组合电路,逻辑电路,冯诺依曼结构作业正文教材学习内容总结 一、门 定义: “门”通常指的是逻辑门(Logic Gates),这是构…