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

本文介绍了如何通过QT的qrc文件将图片等资源编译到EXE中,避免运行时依赖外部文件。详细阐述了qrc文件的使用方法,包括将图片加载到代码中,修改加载路径,以及qrc文件的注意事项,确保资源随程序一起正确运行。
摘要由CSDN通过智能技术生成

为了更加形象地展示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",从而导致图片加载失败。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值