在QT界面中使用ico/png等图片文件,生成exe后不依赖外部文件

为了更加形象地展示UI中某些控件的作用,通常会给控件添加ico/png等图片文件,但如果直接从文件中加载,那么生成的exe也会依赖加载的文件路径,如果路径下没有图片,exe上的对应的控件便不会显示。
一种可行的解决方法是,将图片直接放入代码中,因为图片的本质是二进制字节码,可以将图片作为二进制码解析出来,然后放入代码中作为一个大数组,大数组便会被编译到exe中,不会依赖外部的图片文件。自己再写一个图片文件的读取解析工具比较麻烦,而且容易出错。幸运的是,QT已经有这种解决方法的实际实现了,这种方法就是qrc文件。

qrc文件的使用

qrc文件中可以加载ico、png等图片,将qrc加入VS解决方案中,VS在运行时,便会将qrc文件中的图片编译到qrc_xxx.cpp中,qrc_xxx.cpp中会有一个大的数组,用于存储qrc文件中加载的图片生成的二进制码。
编译运行时,是以main.cpp所在路径为当前路径,因此qrc文件应当与main.cpp放置于同一文件夹,在代码中以相对路径加载图片时,通常是以如下形式:

	QIcon icon;
	icon.addFile(QStringLiteral("./Resources/Icon/Stop.png"), QSize(), QIcon::Normal, QIcon::Off);
	ui.m_pTbtnRefreshFrame->setIcon(icon);

将"./Resources/Icon/Stop.png"加入qrc文件后,只需要将上述代码更改为

	QIcon icon;
	icon.addFile(QStringLiteral(":/Resources/Icon/Stop.png"), QSize(), QIcon::Normal, QIcon::Off);
	ui.m_pTbtnRefreshFrame->setIcon(icon);

将当前路径中".“改为”:",QT便会加载qrc_xxx.cpp中的数组。

qrc文件使用时应当注意的问题

qrc应与main.cpp放置于同一文件夹,否则可能会出现加载图片失败的情况,例如,假设qrc文件位于main.cpp所在文件夹的字目录UI下,加载的图片位于Resources/Icon/Stop.png,自动生成的ui_xxxx.h代码,加载图片的路径可能变为"../Resources/Icon/Stop.png",从而导致图片加载失败。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值