QT5中动态更改图标的方法(转)

发布时间 2023-05-23 19:41:48作者: xihong

简述
在做工程中遇到一个问题,需要根据程序的运行动态的改变显示的图标。在网上找了几篇博客,都失败了,后来自己看UI文件,发现了失败原因,就是设置图标的时候,输入的问文件路径有问题。我摸索出的方法如下。

Step1:添加资源文件

在工程文件处,右击鼠标》添加新文件》QT resource


修改前缀名,具体用处在Step3中可以看到。

这个时候一个资源文件就建立了,此时你可以在pro文件中看到你的resource文件(qrc)


Step2:在资源文件下添加icon、图片等
Step3:动态修改图标

点击添加》文件,选择你的icon、图片等文件,就可以在上方的窗口看见了

Step4:动态加载
首先我们看一下在property窗口静态设置图标的方法,此处以label为例

选择之后,运行程序就能看到图标被静态加载了

动态加载,window有SetWindowIcon函数,Button等有SetIcon函数,Label不能设置icon,但是可以设置bitmap,函数为SetBitmap,我当时遇到的问题就是在使用这些函数的时候,设置图标路径除了问题。

网上大多写的是setWindowIcon(QIcon(“myicon.ico”))或者setWindowIcon(QIcon(":/resource/myicon.ico")),我按照这个写代码运行的结果就是图标无法显示,后来在看UI文件的源码的时候,一个静态添加的图标表示出来是


看到UI文件的描述顿时开朗了,前面添加的文件前缀这里被用上了,于是修改代码如下
窗口:setWindowIcon(QIcon(":/new/prefix1/myicon.icon"))
label:label->SetPixmap(QPixmap(":/new/prefix1/1.bmp"))

成功动态加载图标

后记
后来尝试了使用文件绝对路径加载,也没有问题,相对路径没搞出来,不知道是否可行
label->SetPixmap(QPixmap(“D:/xxx/xxx/1.bmp”))

参考
https://blog.csdn.net/m0_37290785/article/details/76033219
————————————————
版权声明:本文为CSDN博主「happylee524」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/happylee524/article/details/86602945