QT5中动态更改图标的方法

简述

在做工程中遇到一个问题,需要根据程序的运行动态的改变显示的图标。在网上找了几篇博客,都失败了,后来自己看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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值