导航:首页 > 程序命令 > qrc的命令

qrc的命令

发布时间:2023-07-17 02:29:04

‘壹’ qrc_images.cpp是什么是qt库自带的文件吗

图片是一种资源,而在Qt中,对于资源的使用是有其独特的方式的!

①:一般来说:资源在内存中是用资源对象树来表示的,该树在程序启动时创建。

②:而对于资源而言:我们都是需要先将其加入到这棵树中才能加载到内存中并被程序使用!!

③:而将一个图片资源放到程序的资源对象树中是用函数QResource::registerResource()来实现的。亦即:要将资源向这颗资源对象树进行注册,这样才对在系统中new创建这个资“叶子”。

Qt中经常会使用一些图片作为程序的界面,经常用的有三种方法,这里借鉴了小窦朋友的方法总结

1、在程序运行时候加载图片,

也是最简单的方法

image=new QImage("1.png");

这种方法在程序运行时候再去加载图片,需要在程序的运行目录下添加事先放置好图片,这样做的优点是程序运行时候不需要的图片不加载,节省了内存,但是读取速度慢。

2、将图片编译进工程中,

这样在程序发布时候不需要在目录下放置图片,主要通过的是.qrc文件,例如添加image.qrc文件,这个文件会在编译时候生成qrc_image.cpp文件,,我们可以自己看下这个生成的cpp文件,发现其中就是主要有三个static const数组。

qt_resource_data[]

qt_resource_name[]

qt_resource_struct[]

这其中qt_resource_data[]中存放的就是图片的二进制数据。而后边的两个数组我们猜测是做了一个图片名字到上边数据的映射,方便系统找到data中的二进制数据。

至于内部作用机制,有的资料上说是:当使用qrc资源文件时:系统会自动将所有的图片资源都向程序的资源对象树进行注册,并且当程序结束运行时再进行反注册。这也正好解释了为什么此种方法下图片资源会一直占用内存的原因。

使用这种方法时:由于图片资源一直在内存中,避免了I/O操作,从而加快了读取速度。但是却是以消耗内存为代价的

方法如下:

在qrc文件中加上下面的代码。

<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>1.png</file>

<file>2.ico</file>
</qresource>
</RCC>
然后再.pro文件中添加下面的代码

RESOURCES = res.qrc

在程序中使用图片文件时候,通过

:1.png的方法来使用

例如

image=new QImage(":1.png");

3、手动进行注册

第二种方法相当于静态加载,但很多情况下我们更希望是动态加载,亦即:用到哪个资源才将该资源加载进来,而不用的则不加载。

上边第二种方法之所以显示出静态加载的特性,这是由于系统一次性自动把所有图片资源都进行了注册,并且在程序运行过程中一直没有进行反注册才导致的。 如果我们可以自行决定:什么时候对那一部分图片资源进行注册?什么时候对哪一部分图片资源进行反注册。则显然我们可以手动控制整个资源在内存中的生存周期!!

这种方法的主要步骤为:

①:生成外部二进制资源文件。

②:在需要时将该资源向程序的资源对象树进行注册并使用。

③:在不需要时进行反注册。

步骤①主要是用了Qt自带的一个工具:rcc.exe (处于bin文件夹中)。这是Qt的一个资源编译器,其编译对象是qrc文件,而生成rcc二进制资源文件。

那我们可以用它来执行命令 rcc -binary name.qrc -o name.rcc 来把qrc资源文件转成rcc二进制资源文件。

而后在程序内部:当需要使用某一图片资源时:则直接调用

QResource::registerResource(“name.rcc”)进行注册创建分配内存即可! 而不使用时候则调用反注册函数!!

这种方式算是动态加载,会少占用内存。但是如果图片过多的话,什么时候需要加载,什么时候需要去掉,这些逻辑就需要十分注意了。

‘贰’ python怎么使用qtdesigner设计的ui

软硬件环境

‘叁’ python怎么输入图片

python导入图片的方法:

一、直接从源图片中导入(图片位于images文件夹内)self.label1=QLabel(self)

self.label1.setPixmap(QPixmap(r"images/head.jpg"))

layout.addWidget(self.label1)

#或者 layout.addWidget(QLabel(self, pixmap=QPixmap("images/head.jpg")))

二、利用qrc资源导入

1、先写qrc文件

images/head.jpg

images/body.jpg

2、将qrc文件转化成py文件

转化命令为:pyrcc5 res.qrc -o res_rc.py

3、导入res_rc.py:import res_rc

4、layout.addWidget(QLabel(self,pixmap=QPixmap(":/images/head.jpg")))

注意需要添加:/符号作为前缀。

阅读全文

与qrc的命令相关的资料

热点内容
音遇app全民k歌从哪里下载 浏览:644
云盒子能装服务器吗 浏览:794
林汉达pdf 浏览:43
服务器与什么连接 浏览:373
微信视频消息加密怎么设置 浏览:666
python怎么取矩阵最后一行 浏览:923
web服务器怎么关闭jetty进程 浏览:783
米考试app如何退款 浏览:678
我的世界服务器op如何改东西 浏览:787
phototopdf 浏览:482
adobepremierepdf 浏览:28
安卓手机电话簿怎么导出到苹果手机 浏览:763
php实现投票 浏览:333
手机爆力解压加密视频文件 浏览:932
东方财富app怎么看北上资金图解 浏览:418
邢昭林程序员那么可爱拍现场 浏览:169
安卓什么应用可以免费看电视剧 浏览:504
合适pdf 浏览:293
app监测睡眠怎么选择 浏览:644
老人家用什么安卓手机好 浏览:957