不二如是 发表于 2016-11-7 11:02:20

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]
查看完整版本: 155-输入\输出、目录、文件的其他相关类-【扫盲】