在使用Qt Designer设计界面的时候,经常会使用到外部的一些图片资源

但是我发现Qt它有自己的一套图片资源管理体系

甚至可以把外部图片编译成PyQt可以直接调用的py资源文件

看了之后真是大开眼界,原来还可以这么玩!


如图,我的这一大堆图片文件全部编译到了res_rc.py里

更重要的是,它可以在Qt Designer里面直接引用这些资源!




 

下面来说一下怎么实现的吧,我这里演示一下给一个按钮添加图标

这里做一个全新的例子,首先新建一个MainWindow,然后把需要的控件拖进去,我这里拖一个button按钮


然后把里面的文字都给去掉,并修改icon属性


这个时候会看到里面什么都没有,不用急,我们把需要的图片先放到images目录下,调整好目录位置后

点击编辑资源-->新建资源文件,给资源文件起个名字,然后点保存


这样资源文件就建好了

回到编辑资源窗口。然后新建一个前缀,比如叫images

新建好之后就可以点右边的添加文件了,这时候把我们之前准备的图片文件给添加进来


这就是资源文件的使用方法,以后还需要图片的时候直接在这个窗口把需要的图片也添加进来即可

点确定,这时候我们之前准备的图片就可以用了


如果嫌图标太大或者太小,可以直接在属性栏里面改iconSize


这时候我们这个简单的UI就算设计完了


保存出来,现在我们可以来总结下看到我们当前工程文件夹下的所有文件


搞清楚每个文件是干什么的,有什么作用之后,开始进行编译

还是老方法,需要用到命令行(有能力的话可以写批处理,文件一拖上去就能执行编译脚本),先cd到当前的工程目录

然后分别使用pyuic编译ui界面文件,同时需要使用到pyrcc来编译qrc资源文件

语法:

编译ui文件 pyuic4.bat -x 源文件名.ui -o 目标文件名.py
编译qrc文件 pyrcc4 源文件名.qrc -o 目标文件名_rc.py

这样就算是编译完成了,直接运行demo.py即可看到效果

 

最后说一下,其实搞qrc资源文件的目的在于应付Qt Designer

如果直接在python里面编码的话,直接调用图片url就行了,不用这么复杂的

这个qrc文件可以直接用Qt Designer来生成,也可以参照网上的一些教程直接用记事本写xml格式的文件

但是最终核心还是要用到Qt Designer中去,由于python不能直接识别qrc这种文件

所以必须通过PyQt给的pyrcc工具来把qrc资源文件也编译成python能够识别的py文件

另一方面,把png, jpeg等图片文件编译成py文件的话,相当于对资源文件进行了打包加密

也相当于对用户进行了隐藏,不用把图片直接暴露在用户的视线里


最后总结一下整体的思路,就是当Qt Designer需要调用外部图片资源的时候

使用Qt Designer自带的资源管理器引入外部图片资源文件,并装载进一个qrc列表文件

最后在编译的时候,除了编译ui文件,也需要把qrc文件一并编译

ui文件的编译使用pyuic,qrc文件的编译使用pyrcc