什么是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或者在编译系统中添加编译规则,如下例子所示:

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

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

  1. rcc -no-compress Spring.qrc

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

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

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

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

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

  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属性值或者完整路径,如下例子所示:

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

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

Qt Resource系统概说(资源压缩不压缩都可以)的更多相关文章

  1. Linux系统档案与文件系统的压缩与打包

    以下文章基于centos6.5 文章引自:http://www.jb51.net/LINUXjishu/105916.html 一.Linux下常见的压缩指令 在linux的环境中,压缩文件的扩展名大 ...

  2. 前端性能优化成神之路—资源合并与压缩减少HTTP请求

    资源合并与压缩减少HTTP请求的概要 资源合并与压缩减少HTTP请求主要的两个优化点是减少HTTP请求的数量和减少请求资源的大小 http协议是无状态的应用层协议,意味着每次http请求都需要建立通信 ...

  3. ASP.NET Core 资源打包与压缩

    ASP.NET Core 资源打包与压缩 在ASP.NET 中可以使用打包与压缩来提高Web应用程序页面加载的性能. 打包是将多个文件(CSS,JS等资源文件)合并或打包到单个文件.文件合并可减少We ...

  4. Qt中用QuaZip来压缩和解压缩文件

    1.简介 QuaZIP是使用Qt,C++对ZLIB进行简单封装的用于压缩ZIP以及解压缩ZIP的开源库.如果你的Qt项目当中用到了压缩以及解压缩ZIP的话你可以考虑选择使用它. 官方主页:http:/ ...

  5. 资源的合并与压缩-html压缩

    资源的合并:减少http请求数量 资源的压缩:减少请求资源的大小 html压缩 html代码压缩就是压缩这些在文本文件中有意义,但是在html中不显示的字符,包括空格,制表符,换行符等,还有一些其他意 ...

  6. Linux常用命令学习3---(文件的压缩和解压缩命令zip unzip tar、关机和重启命令shutdown reboot……)

    1.压缩和解压缩命令    常用压缩格式:.zip..gz..bz2..tar.gz..tar.bz2..rar .zip格式压缩和解压缩命令        zip 压缩文件名 源文件:压缩文件   ...

  7. 『学了就忘』Linux基础命令 — 32、压缩和解压缩相关命令

    目录 1.".zip"格式压缩 2.".gz"格式压缩 3.".bz2"格式压缩 4.".tar"格式打包 5.打包和压 ...

  8. Linux下的压缩和解压缩命令——gzip/gunzip

    gzip命令 gzip命令用来压缩文件.gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处".gz"扩展名. gzip是在Linux系统中经常使用的一个对文件进行压 ...

  9. Linux下的压缩和解压缩命令——zip/unzip

    zip命令 zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名 的压缩文件. 选项: -A   调整可执行的自动解压缩文件. -b<工作目录> ...

随机推荐

  1. 在线算法交互、可视化与演示及应用(caffe 网络配置文件 .prototxt 的可视化)

    0. 全集 Explained Visually 1. 图像与视觉 Image Kernels 2. 数学操作 Convolution arithmetic:卷积: 3. 神经网络与深度学习 A Ne ...

  2. Cordova热更新和App升级 - 简书

    原文:Cordova热更新和App升级 - 简书 公司的cordova项目前段时间增加了热更新功能,自己第一次做的时候在网上查找了很多资料,有的资料写的并不全面遇到了很多坑.因此总结一些在开发过程中遇 ...

  3. 【28.57%】【codeforces 711E】ZS and The Birthday Paradox

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  4. events(事件): 基础1

    1    所有能触发事件的对象都是 EventEmitter 类的实例. 这些对象开放了一个 eventEmitter.on() 函数,允许将一个或多个函数绑定到会被对象触发的命名事件上. 事件名称通 ...

  5. jQuery迭代器

    http://www.imooc.com/code/3417 迭代器 迭代器是一个框架的重要设计.我们经常需要提供一种方法顺序用来处理聚合对象中各个元素,而又不暴露该对象的内部,这也是设计模式中的迭代 ...

  6. 堆(stack) 之 c 和 c++模板实现(空类默认成员函数 初谈引用 内联函数)

    //stack 的基本操作 #include <iostream> using namespace std; const int maxn = 3; typedef struct Stac ...

  7. 安德鲁斯Launcher得到的装在手机的应用程序列表

    Launcher最基本的是让所有的应用程序和入口图标的列表.有两种方法来获得,一般: PackageInfo ResolveInfo 执行获取全部APP的Launcher而且同意进行点击事件,进入到应 ...

  8. explanatory variable(independent vs dependent)、design matrix

    design matrix(设计矩阵) 是统计学上的概念,一般标记为 X,是由一组对象的解释变量(explanatory variables)构成的矩阵. 1. explanatory variabl ...

  9. delphi之多线程编程(尚未学习)

    本文的内容取自网络,并重新加以整理,在此留存仅仅是方便自己学习和查阅.所有代码均亲自测试 delphi7下测试有效.图片均为自己制作. 多线程应该是编程工作者的基础技能, 但这个基础我从来没学过,所以 ...

  10. xmarin live player 连接 IOS以及安卓实现实时效果查看

    原文:xmarin live player 连接 IOS以及安卓实现实时效果查看 在之前有介绍过xamarin 单独IOS项目开发的运行环境搭建,但是这段时间我看到了xmarin forms 3.0  ...