pic文件怎么打开(电脑图片pic打开方式)
1、什么是Qt 资源系统
Qt资源系统是一种将图片、数据存储于二进制文件中的一套系统。这些图片、数据会被我们的程序使用,它们称为资源。Qt资源系统中存储了这些资源,使得程序可以很方便地找到并使用它们。
Qt资源系统是独立于平台的,因为无论是文件还是翻译文件,都会被打包成为二进制数据。我们可以把这些二进制数据保存到可执行文件中,这种做法称为静态加载资源;也可以把它们单独保存在某个文件中,称为动态加载资源。
2、qrc文件
qrc文件是基于XML格式的资源系统配置文件(注意是配置文件而不是资源文件本身),其中指定了各种资源的信息。
将资源文件打包为二进制数据的流程是:
写qrc文件 → 用rcc编译 → 二进制数据
2.1、写qrc文件
两种方式:
- 用Qt Creator编写;
- 手工写。
这里之所以有“手工写”,是因为Qt Creator只支持一次生成一个qrc文件,如果我们需要多个qrc文件或者一个qrc文件下的多个目录,那么需要多次同样的操作,费时费力。遇到这种情况,可以在命令行中列出所有文件,复制粘贴到某个文本编辑器中,然后多行同时添加前缀后缀,就像这样:
手工写qrc文件需要熟悉qrc文件的规则,这一点听起来要学习很多东西,实际上可以先用Qt Creator写好一个qrc文件之后照着它的样式写就可以了。所以这里只说明如何用Qt Creator写qrc文件:
①在项目中添加Qt Resource File,命名为resource(名字随意),完成后就得到了一个空的qrc文件:resource.qrc。此时文件中还没有资源信息,只有两行简单的标识符:
这里有一点需要注意,如果直接双击qrc文件,打开之后可能是这样:
这时是以资源编辑器的形式打开的,如果要进入文本编辑器模式,只需要右键qrc文件,以文本编辑器模式打开
②我们在工程目录(即.pro所在目录)下创建一个pic文件夹用于存放资源文件,比如这里我们存放了三个图片:pic1.jpg、pic2.jpg、pic3.jpg
③在Qt Creator中打开qrc 资源编辑器,第一步永远是添加前缀,如/logo(如果不写任何前缀,则会默认生成一个单斜杠 前缀,最后访问该前缀下的资源文件时,写法就是qrc:///资源文件名,第二个斜杠表示这个默认前缀目录,这样的话可读性不高。),然后才是添加资源文件:
最后,我们在文本编辑器中查看,就可以看到①中所说的两行标识符没有了,剩下的全是包含前缀的资源信息了:
2.2、前缀、别名、语言环境
在创建qrc文件的过程中,有前缀、别名、适用的语言环境这些项,我们只是设置了前缀,其它两项都没有管。其实,这些项的本质是分组。
这里终点说下语言环境,语言环境是和前缀一起设置的。有时我们的同一个图标可能因为国家原因做了不同的版本,Qt可以自动根据本机语言环境选择性地加载不同的图标。
比如,这里我又多了一个文件pic2_fr.jpg,并且把它的别名设置为pic2.jpg。前缀都是logo,只是后者的语言环境属性为fr。这意味着,当我本机是法语时,程序会从第二个前缀中找到叫pic2.jpg的文件:
2.3、两种资源路径
假设已经加载好了资源,访问这些资源的两种方式是:
- 文件路径—— :/pic/pic1.png,即 :/资源路径(相对于工程目录)
- URL—— qrc:///pic/pic1.png,即 qrc:///资源路径(相对于工程目录)
3、如何加载资源
两种方式:
- 将资源存储到可执行文件中(静态方式);
- 将资源存储在单独的二进制文件中并由可执行文件调用(动态方式)。
3.1、静态方式
除了用Qt Creator在工程中添加qrc文件外,还需要在.pro文件中加入qrc文件,以便qmake可以识别资源文件,不过这一步是由Qt Creator自动完成的。
qmake编译后会生成一个名为qrc_resource.cpp的文件,打开它之后我们会看到刚才我们的资源已经以静态数组的形式保存在其中了。最终该文件的数据会存入可执行文件中。
3.2、动态方式
不需要写pro文件,需要手动用rcc工具编译qrc文件,然后用QResource类加载。
1)手动用rcc编译qrc文件;
rcc -binary resource.qrc -o resource.rcc2)在程序中用QResource类加载。
QResource::registerResource("/path/resource.rcc");备注:rcc工具的使用,请自行参考官方文档"Resource Compiler (rcc)"。
4、在lib库中使用资源
一般我们写完 lib 库后提供给外界的就是一个库文件和头文件,所以无论你是在库中使用资源还是给外界提供资源,最好是采用静态方式。不然的话你还得额外提供 rcc 文件,即独立的二进制资源文件。
将资源存储于 lib 库中,需要调用 Q_INIT_RESOURCE() 宏来强制资源初始化。反之如果卸载资源则调用 Q_CLEANUP_RESOURCE(),例如:
MyClass::MyClass():BaseClass() { Q_INIT_RESOURCE(resources); QFile file(":/myfile.dat"); ... }注意:在程序而不是库中,如果采用静态方式,不需要使用Q_INIT_RESOURCE() 和 Q_CLEANUP_RESOURCE()。
其他文章
- 跨境电子商务是做什么的(跨境电商基础知识概述)
- 墙布一线品牌十大名牌排名榜(最环保的墙布品牌)
- 淘宝云客服怎么报名上岗(阿里居家客服应聘方法)
- 韩国最贵的化妆品品牌有哪些(十大高端护肤品排行榜)
- 网上怎样才能买到正版的书(5个正版图书购买渠道)
- 日本高端护肤品排行榜前十名(公认最顶级抗衰老护肤品)
- 淘宝怎么抢秒杀商品(快速抢到秒杀商品技巧)
- 淘宝直通车投放策略有哪些(有关直通车的玩法技巧)
- 十大行李箱品牌排行榜(国内口碑最好的拉杆箱)
- 苏宁易购和京东买电器哪个更靠谱(两大网站的区别讲解)
- 奢侈品牌在哪个网站买(十大知名奢侈品购物平台)
- 千牛pc版卖家页面在哪里(千牛工作台卖家中心)
- 闲置二手交易平台都有哪些(二手交易app排行榜)
- 天猫直通车怎么操作(教你正确开直通车的方法)
- 淘宝降权在哪里查询(了解账号降权查看方法)
- 名牌手机有哪些牌子(十大热销手机品牌排行榜)
- 淘宝代卖怎么操作的(关于淘宝代卖的方式详解)
- 兰蔻小黑瓶怎么样好用吗(小黑瓶精华的优点和缺点)
- 最好的矿泉水排名有哪些(全球最佳5种矿泉水品牌)
- 最有效的美白产品有哪些(美白精华液排行榜10强)
- 哪款美白护肤品效果好(公认效果好的美白水乳推荐)
- 抖音封号是什么原因造成的(从辛巴被封找到缘由)
- 淘宝搜索排名规则解析(有关销量排名规则和技巧)
- 比较好的护肤品牌有哪些(十大知名护肤品牌介绍)
- 平价好用的睫毛膏品牌有哪些(适合新手小白的睫毛膏推荐)
- 美国转运推荐哪家公司(靠谱的转运公司排名)
- 商品的基本属性包括什么(商品属性包括的内容)
- 网购技巧有哪些方法(网上购物常用技术)
- 聚划算团购网秒杀是真的吗(聚划算开团抢购技巧)
- 世界上最贵的口红是什么牌子(顶级口红品牌排行榜)