155-输入\输出、目录、文件的其他相关类-【扫盲】
本帖最后由 不二如是 于 2016-11-7 15:13 编辑前面搞定了,最重要的几个入门级对文件、目录、I\O的操作介绍。
还有一些零碎的,一并扫清哈~{:7_141:}
[*]应用程序设置
QSettings类提拱了一个持久的与平台无关的应用程序设置!
是不是很拗口~
用户通常期望应用程序可以记住他们的设置~
例如,设置了窗口大小和位置,后续程序一样实现。
这些信息在Win上一般存储在系统注册表中,在Mac上存储在XML偏好文件中,在·Unix中存储在INI文本文件。
QSettings是对这些技术的一个抽象,可以使用一种可移植的方式来保存和恢复应用程序的设置,支持自定义存储类型。
QSettings的API是基于QVariant的,保存大多数基于值的类型
Qt有一个示例程序:Settings Editor,在Tools分类中,有兴趣自行看之哈~
[*]统一资源定位符
[*]QUrl
QUrl类提供了一个方便的接口来操作URLs!
URL啥意思呢?
就是:
Uniform Resource Locator的缩写。
知道你还没懂,翻译成中文就是:
统一资源定位符!
啥?你还没懂?!
那这个你肯定懂了:
网页网址!
一个标准的URL格式如下:
protocal://hostname[:port]/path/[? query]#fragment
protocol 指定传输协议,http还是ftp
hostname 指定存放资源的服务器的域名系统的主机名或者IP地址
在主机名前可以包含连接到服务器所需的用户名和密码
(username:password)
port 端口号,可选,省略时使用默认的端口号,htttp默认为80
path 指定主机上的目录或者文件地址,路径中使用'/'分隔符
query 设置查询参数,可选,参数间使用‘&’隔开
fragment 指定网络资源中的片段
例如下面的URL:
http://www.fishc.com/map/
用来查询www.fishc.com上的map网页。
QURL可以解析和构建编码或者编码格式的URLs,支持国际化域名IDNs。
可以在构造函数中传递一个QString来初始化QUrl
或者使用setUrl()和setEncodedUrl()~
这两种格式俗名叫:
编码和末编码
编码一般用于发送到web服务器。
末编码适合像用户展示。
常用函数给你总结下:
setScheme() 设置协议 setUserName() 设置用户名
setPassword() 设置密码 setHost() 设置主机
setPort() 设置端口 setPath() 设置路径
setEncodedQuery() 设置查询字符串 setFragment() 设置片断
setAuthority() 一次性设置用户名、密码
主机、端口 setUserInfo() 一次性设置用户名、密码
[*]QUrlInfo
QUrlInfo类存储了URLs的相关信息。
URLs可以被检索的信息包括name()文件名、permissions()权限、owener()拥有者、group()、size()
lastModified()最后修改日期、lastRead()最后被读取的日期、isDir()是否是目录、isFile()是否是文件
isSymLink()是否是符号链接、isWritable()是否可写、isReadable()是否可读、isExecutable()是否可执行
[*]Qt资源
QResource类提供了接口直接读取资源文件,用来表示一组数据的对象。
该组数据设计了一个单一的资源实体。
QResource类可以使用原始格式来直接访问字节,允许不使用缓冲拷贝或间接来读取数据。
QResource类也可以使用绝对路径进行加载,'/'字符开始,或者使用资源表示法,‘:’开始。
一个资源可以保留在一个程序的二进制文件外面,等需要时使用registerResource()来加载。
有兴趣的可以看The Qt Resource System~
[*]缓冲区
QBuffer类为QByteArray提供了一个QIODevice接口。
允许使用QIODevice接口来访问QByteArray。
QByteArray被视为一个标准的随机访问的文件。
默认就是:
创建一个QBuffer内部自动创建一个QByteArray缓冲区
常用函数如下哈:
open() 打开一个缓冲区 write() 对缓冲区进行写入
putChar() 对缓冲区进行写入 read() 读取缓冲区
readLine() 读取缓冲区 readAll() 读取缓冲区
getChar() 读取缓冲区 size() 返回缓冲区的当前大小
seek() 定位到缓冲区的一个指定位置。 close() 结束访问并关闭
好吧,再举两个如何写入\读取的例子。
QBuffer向QByteArray写入数据:
QByteArray byteArray;
QBuffer buffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
QDataStream out(&buffer);
out<<QApplication::palette();
QBuffer如何从QByteArray读取数据:
QPalette palette;
QBuffer buffer(&byteArray);
buffer.open(QIODevice::ReadOnly);
QDataStream in(&buffer);
in>>palette;
注意:
当有新的数据到达了缓冲区,QBuffer会发射readyRead()信号!
通过关联这个信号,可以使用QBuffer来存储临时的数据,而后进行相应的处理~
页:
[1]