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或者在编译系统中添加编译规则,如下例子所示:
- rcc -binary Spring.qrc -o Spring.rcc
- QResource::registerResource(''/path/to/Spring.rcc'');
rcc默认压缩Resource为ZIP格式,如果Resource已经是压缩格式了,如.png,再压缩就没必要了,这个可以通过如下命令取消压缩:
- rcc -no-compress Spring.qrc
有关rcc的详细用法可参考如下网址:
http://doc.qt.io/qt-5/rcc.html
QFile是Qt中的一个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
http://blog.csdn.net/ieearth/article/details/43524671
Qt Resource系统概说(资源压缩不压缩都可以)的更多相关文章
- Linux系统档案与文件系统的压缩与打包
以下文章基于centos6.5 文章引自:http://www.jb51.net/LINUXjishu/105916.html 一.Linux下常见的压缩指令 在linux的环境中,压缩文件的扩展名大 ...
- 前端性能优化成神之路—资源合并与压缩减少HTTP请求
资源合并与压缩减少HTTP请求的概要 资源合并与压缩减少HTTP请求主要的两个优化点是减少HTTP请求的数量和减少请求资源的大小 http协议是无状态的应用层协议,意味着每次http请求都需要建立通信 ...
- ASP.NET Core 资源打包与压缩
ASP.NET Core 资源打包与压缩 在ASP.NET 中可以使用打包与压缩来提高Web应用程序页面加载的性能. 打包是将多个文件(CSS,JS等资源文件)合并或打包到单个文件.文件合并可减少We ...
- Qt中用QuaZip来压缩和解压缩文件
1.简介 QuaZIP是使用Qt,C++对ZLIB进行简单封装的用于压缩ZIP以及解压缩ZIP的开源库.如果你的Qt项目当中用到了压缩以及解压缩ZIP的话你可以考虑选择使用它. 官方主页:http:/ ...
- 资源的合并与压缩-html压缩
资源的合并:减少http请求数量 资源的压缩:减少请求资源的大小 html压缩 html代码压缩就是压缩这些在文本文件中有意义,但是在html中不显示的字符,包括空格,制表符,换行符等,还有一些其他意 ...
- Linux常用命令学习3---(文件的压缩和解压缩命令zip unzip tar、关机和重启命令shutdown reboot……)
1.压缩和解压缩命令 常用压缩格式:.zip..gz..bz2..tar.gz..tar.bz2..rar .zip格式压缩和解压缩命令 zip 压缩文件名 源文件:压缩文件 ...
- 『学了就忘』Linux基础命令 — 32、压缩和解压缩相关命令
目录 1.".zip"格式压缩 2.".gz"格式压缩 3.".bz2"格式压缩 4.".tar"格式打包 5.打包和压 ...
- Linux下的压缩和解压缩命令——gzip/gunzip
gzip命令 gzip命令用来压缩文件.gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处".gz"扩展名. gzip是在Linux系统中经常使用的一个对文件进行压 ...
- Linux下的压缩和解压缩命令——zip/unzip
zip命令 zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名 的压缩文件. 选项: -A 调整可执行的自动解压缩文件. -b<工作目录> ...
随机推荐
- Swift学习——Swift解释具体的基础(六)
Optionals 可选 可选(它似乎并不如此翻译)它适用于那些值这种情况可能是空的,有两种情况一个可选:存在值并等于x,要么值不存在. 选配的概念在OC和C里面并没有.在OC中最接近的概念就是 ...
- express笔记
1.req.query: 获取get请求的查询字符串对象 2.req.body: 获取post请求的查询字符串对象,要使用该方法需要先使用body-parser中间件,app.use(bodyPars ...
- Qt 的几个核心机制总结之 布局(QWidget可以设置setSizePolicy,而QSizePolicy有Fixed,minimum,maximum,preferred,expanding,ignore等7个属性,还可以横竖分开)
1.Qt布局的作用 Qt的布局是通过布局管理器来实现的,布局管理器负责在父类窗口部件区域构建子窗口部件,使得放置在窗体中的每个窗口部件都有一个适合的大小和位置,并且能够随着应用程序本身的变化而变化从而 ...
- 利用反汇编手段解析C语言函数
1.问题的提出函数是 C语言中的重要概念.利用好函数能够充分利用系统库的功能写出模块独立.易于维护和修改的程序.函数并不是 C 语言独有的概念,其他语言中的方法.过程等本质上都是函数.可见函数在教学中 ...
- NYOJ - 括号匹配(二)(经典dp)
括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描写叙述 给你一个字符串,里面仅仅包括"(",")","[&quo ...
- 图形的认识(curve,surface,hypersurface)
平滑函数(smooth function): curve:曲线: 二维平面: surface:曲面: 三维空间: hypersurface:超曲面: 更高维度: 1. surface 是对平面的泛化, ...
- handler looper和messageQueue
一.用法. Looper为了应付新闻周期,在创建过程中初始化MessageQueue. Handler在一个消息到当前线程的其他线程 MessageQueue用于存储所述消息 Looper其中线程创建 ...
- JS里脱离文档流
<html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title&g ...
- WPF数据模板的数据触发器的使用
<Window x:Class="CollectionBinding.MainWindow" xmlns="http://schemas.micros ...
- WPF 流打印
原文:WPF 流打印 PrintDialog printDialog = new PrintDialog(); if (printDialog.ShowDialog() == true) { Syst ...