Qt Resource系统概说(资源压缩不压缩都可以)

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

与Qt Resource系统密切相关的有三个法宝,分别是qmake、rcc、QFile

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

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

 

[cpp] view plain copy
 
  1. rcc -binary Spring.qrc -o Spring.rcc  
  2. QResource::registerResource(''/path/to/Spring.rcc'');  

 

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

 

[plain] view plain copy
 
  1. rcc -no-compress Spring.qrc  

 

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

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

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

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

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

[html] view plain copy
 
  1. <!DOCTYPE RCC><RCC version="1.0">  
  2. <qresource>  
  3.     <file>images/apple.png</file>  
  4.     <file>images/pear.png</file>  
  5.     <file alias=''banana-img.png''>images/banana.png</file>  
  6. </qresource>  
  7. <qresource prefix=''/animals''>  
  8.     <file>icons/tiger.png</file>  
  9.     <file>icons/monkey.png</file>  
  10.     <file alias=''fox-icon.png''>icons/fox.png</file>  
  11. </qresource>  
  12. </RCC>  

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

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

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

[cpp] view plain copy
 
  1. :/images/apple.png  
  2. qrc:///animals/fox-icon.png  
 
 

http://blog.csdn.net/ieearth/article/details/43524671

posted @ 2016-11-22 19:39  findumars  Views(973)  Comments(0Edit  收藏  举报