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<工作目录> ...
随机推荐
- CSS 中的高度百分比
CSS 中可以使用%来给定指定元素的大小,也就是高度.宽度.margin,padding 等等,但是相信很多人都对百分比表示法的具体含义并不清楚,那么不懂就练,毕竟是检验真理的唯一标准(考研党举个手我 ...
- 他们实际上控制的定义很easy5/12
尊重原创转载请注明:From AigeStudio(http://blog.csdn.net/aigestudio)Power by Aige 侵权必究! 炮兵镇楼 近期龙体欠安.非常多任务都堆着,虽 ...
- [Scikit-Learn] - introduction
scikit-learn是一个用于机器学习的 Python 模块,建立在SciPy基础之上. 主要特点: 操作简单.高效的数据挖掘和数据分析 无访问限制,在任何情况下可重新使用 建立在NumPy.Sc ...
- 我是怎么做App token认证的
使用Token来做身份认证在目前的移动客户端上非常流行,Token这个概念来源于OAuth认证,主要是在服务端实现.关于相关的原理,同学们自行百度.在这里,我简单介绍一下我是怎么具体实现的,重点描述t ...
- 学习Hadoop和Spark的好的资源
1. 官网http://spark.apache.org 有各种资源链接: 2. 总结得很好的个人博客[从零开始学Hadoop系列]1)初识http://blog.csdn.net/u01016816 ...
- ADO.net Connection对象简介
Connection对象 学习的是刘皓的文章 ADO.NET入门教程(四) 品味Connection对象 这篇文章开始水平一般起来了,主要介绍了要优雅的使用这个对象 1 用try...catch.. ...
- windows 的使用 —— 注册表(软件的安装和卸载)
win + r(run):输入 regedit(register edit)进入: 1. 网络连接 比如一些 vpn 安装之后,会对网络连接进行一定的修改,这样在 vpn 工具删除之后,仍然无法消除修 ...
- php_Ubuntu Linux下为PHP5安装cURL,mysql
如果你在用PHP, 你可能需要用到cURL, 这是其中最流行的插件. PHP CURL插件需要通过libcurl来实现, Daniel Stenberg创建的一个库, 能够和许多不同类型协议的web服 ...
- ef core code first from exist db
目标 为现有数据库生成新的连接,允许只选择部分表 可以处理一些很怪的需求,比如EF升级EF Core(这个可能有其他解),EF.EF Core同时连接一个数据库 我遇到的问题是: 原项目是.net f ...
- WPF特效-拼图游戏
原文:WPF特效-拼图游戏 此文主要描述我实现碎片化的便捷过程. 步骤1: 选取参考图如下(百度图库搜的): 步骤2: 根据效果图或者模型构建贝塞尔曲线,为了方便查看效果,可以设置控制点, ...