Qt Resource系统概说

什么是Qt Resource系统?简单的说,就是在可执行程序中存储binary文件,而且还是与平台无关的。

Qt Resource系统密切相关的有三个法宝,分别是qmakerccQFile

qmake是一种编译工具,根据developer创建的工程文件,自动生成MakeFile,简化了编译过程。qmake提供了mocuic编译规则,专门用来支持Qt开发,其中mocQt元对象编译器Meta Object CompileruicQtUI编译器User InterfaceCompilerqmake不仅跨平台,而且适用于其它非Qt编写的软件工程,具体用法可参考如下网址:http://doc.qt.io/qt-5/qmake-manual.html

rccResource Compiler,在Qt应用程序编译过程中嵌入Resource,其后缀是.qrc,编译时会生成对应的C++源文件,比如说有一个Spring.qrc文件,在.pro文件中有“RESOURCE += Spring.qrc”,编译时就会生成一个qrc_Spring.cpp文件,如果没有用到.pro文件,也可以自行调用rcc或者在编译系统中添加编译规则,如下例子所示:

rcc -binary Spring.qrc -o Spring.rcc
QResource::registerResource(''/path/to/Spring.rcc'');

rcc默认压缩ResourceZIP格式,如果Resource已经是压缩格式了,如.png,再压缩就没必要了,这个可以通过如下命令取消压缩:

rcc -no-compress Spring.qrc

有关rcc的详细用法可参考如下网址:

http://doc.qt.io/qt-5/rcc.html

QFileQt中的一个C++类,提供了文件的读写接口,具体可参考Qt文档。

另,QDir类提供了访问目录结构及内容的方法,QResource类提供了直接读取Resource的接口。

上面提到的.qrc文件是基于XML文件格式的,如下例子所示:

<!DOCTYPE RCC><RCC version="1.0">
<qresource>
    <file>images/apple.png</file>
    <file>images/pear.png</file>
    <file alias=''banana-img.png''>images/banana.png</file>
</qresource>
<qresource prefix=''/animals''>
    <file>icons/tiger.png</file>
    <file>icons/monkey.png</file>
    <file alias=''fox-icon.png''>icons/fox.png</file>
</qresource>
</RCC>

<qresource>标签中的prefix属性可有可无。

<file>标签中的文件路径是相对于当前.qrc文件的,应该在同一级目录或者.qrc文件所在目录的子目录,其alias属性还可以给文件完整路径取个别名。

访问上面添加的文件时,以“:/”或者“qrc:///”开始,接着是prefix,后面是文件的alias属性值或者完整路径,如下例子所示:

:/images/apple.png
qrc:///animals/fox-icon.png

你可能感兴趣的:(qt,resource,qrc,qml)