zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    PHP文件系统处理(二)
    PHP中的文件系统处理(一)
    PHP中常用正则表达式大全
    PHP中的正则表达式的使用
    SLF4J日志框架
    内部类
    计算机存储单位
    Maven 要点
    Maven 父类工程创建及引用
    Eclipse Maven Web项目创建
  • 原文地址:https://www.cnblogs.com/findumars/p/6090813.html
Copyright © 2011-2022 走看看