Qt修改exe文件图标
修改Qt生成exe的图标以及软件标题图标
简介
在使用Qt进行桌面应用开发时,为生成的应用软件(exe)设置一个默认图标是非常必要的。对于使用Qt开发的同学,又有两种IDE可供选择:Qt Creator和Visual Studio + Qt Tools,这两种IDE下的设置方式略有不同。
因此,本篇文章将详细介绍如何在这两种IDE环境下为生成的应用软件设置默认图标以及窗口标题图标
QtCreator下添加exe图标
在Qtcreator下有两种方法,第一种是直接在.pro文件里进行设置,第二种是通过Windows下的rc文件来设置。
首先要注意的一点是,使用的.ico文件是不可以直接用jpg等图片格式直接修改后缀名来的,必须是用转换工具来通过jpg转换成ico的格式,不然就会出现[xxx.o Error]的问题
直接添加.ico
Qt的帮助文档里面写了关于怎样修改图标的说明,文档如下:

首先你需要有一个xxx.ico文件(xxx.ico就是你需要修改的图标的文件名字)
然后把xxx.ico文件放到你的工程文件目录下(也就是你的pro文件所在的目录)
然后在.pro文件中添加RC_ICONS = xxx.ico
保存,然后重新构建就可以了,这个方法能够修改资源管理器以及程序运行时的图标。
通过.rc文件修改
Qt的帮助文档同样有:

首先你需要有一个xxx.ico文件(xxx.ico就是你需要修改的图标的文件名字)
然后你需要创建一个xxx.rc文件
在xxx.rc文件中添加IDI_ICON1 ICON "xxx.ico"
然后在.pro文件中添加RC_FILE += xxx.rc
Visual Studio下添加exe图标
在Visual Studio的环境下,我们执行以下步骤:
- 右击项目,点击添加,选择资源文件

image-20230611142024270.png)
- 选择icon文件,点击导入

- 选择你自己制作好的ico,确定。然后再生成,就可以看到exe的图标改变了。

设置窗口标题图标
我们在设置了软件图标之后,发现任务栏和窗口的图标还是默认的,但其实设置的方法很简单,代码如下:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MarkdownDemo w;
w.show();
w.setWindowIcon(QIcon("D:\\Desktop\\logo.jpg"));
return a.exec();
}
调用setWindowIcon就可以设置软件的标题图标。

关于.rc文件
在Windows下,Qt对于.rc文件几乎没有什么介绍,只有一个手册的部分,Setting the Application Icon。但是在MSDN上面有,见ICON resource,VERSIONINFO resource。
关于利用QtCreator自动生成rc文件,你可以参考这篇博文Qt 之生成 Window 资源文件(.rc 文件),这里面讲了如何利用Qt自动生成rc文件,你可以根据自己的要求进行修改。当然你也可以用前面说的方式——使用Visual Studio来生成rc文件。
以下借鉴大佬的博文,Windows 资源文件(.rc文件)小记
ICON resource
格式:
nameID ICON filename
nameID : 标识资源的唯一名称或16位无符号整数值。
filename: 文件名,如果文件不在当前搜索路径,必须就要是绝对路径。
例子:
IDI_ICON ICON "desk.ico"
IDI_ICON1 ICON "custom.ico"
VERSONINFO resource
格式:
versionID VERSIONINFO fixed-info {block-statement...}
或者
versionID VERSIONINFO
fixed-info
BEGIN
block-statement
. . .
END
VERSIONINFO
| 变量名 | 含义 |
|---|---|
| versionID | 版本信息资源标识符。该值必须为1 |
| fixed-info | 版本信息,例如文件版本或者预期的操作系统 |
| block-statement | 块语句,包含字符串和变量的信息 |
fixed-info
| 变量名 | 含义 | 例子 |
|---|---|---|
| FILEVERSION | 文件的二进制版本号,4个16位整数其实是2个32位整数 | FILEVERSION 3,10,0,61 |
| PRODUCTVERSION | 产品版本号,同上 | (1,0,0,0) |
| FILEFLAGSMASK | 指示FILEFLAGS语句中的哪些位是有效的 | FILEFLAGS VS_FF_DEBUG | VS_FF_PRERELEASE |
| FILEFLAGS | 文件属性 | VS_FF_DEBUG |
| FILEOS | 文件系统 | VOS__WINDOWS32 |
| FILETYPE | 文件种类 | VFT_APP |
| FILESUBTYPE | 文件功能 | VFT2_DRV_KEYBOARD |
详细的参见:Creating a Proper Version Information Resource
上面介绍了如何设置生成的exe的图标以及窗口标题的设置,下一期,我们讲一讲,怎么设置某种后缀的文件默认打开软件以及关联某种后缀的文件图标,敬请期待!
创作不易,如果本篇文章对你有帮助,烦请点赞、收藏支持一下
Qt修改exe文件图标的更多相关文章
- 用UpdateResource修改EXE文件图标(已修正)
//请自行添加到 Type 处PICONDIRENTRY = ^ICONDIRENTRY;ICONDIRENTRY = packed record bWidth: Byte; bHeight: Byt ...
- VC6.0生成的exe文件图标
以下是我网上收到的方法 我都试过 成功不了 具体说下我遇到的问题 VC6.0生成的exe文件图标是用Icon下几个图标中value值最小的,顺序为IDR_MAINFRAME.IDR_ICONTETYP ...
- C语言Win32 Application 的标题栏图标,任务栏图标,exe文件图标问题
我们这里新建的首先是一个空工程,新建c文件. 因为是空工程,我们没有资源文件,要用到图标资源,首先要新建和导入图标为资源. 选择引入资源,选择要引入的ico文件 完成,重命名保存Script_icon ...
- 直接读取修改exe文件
1. 前言 配置器的编写有很多的方式,主要是直接修改原始的受控端的程序,有的方式是把受控端和配置信息都放到控制端程序的内部,在需要配置受控端的时候直接输入配置信息,生成受控端:也有的方式是在外部直接修 ...
- Win10系统桌面exe文件图标消失不见了的解决方法
使用 Windows10正式版系统 过程中,发现桌面上的一些exe文件图标突然消失不见了.虽然这些exe程序还能够正常运行,可是感觉还是非常不舒服.这该怎么办呢?接下来,就随小编看看Windows10 ...
- Qt设置生成的exe文件图标
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_37354286/article/d ...
- qt的exe文件查找依赖的dll
用qtcreater编译完工程生成的exe文件往往会依赖dll文件.如何一次定位exe文件所以依赖的所有dll文件呢,今天发现了软件叫hap-depends. 截图如下: 用这个软件打开exe文件就会 ...
- Python文件.py转换为.exe可执行程序,制作.exe文件图标
当大家想要将自己写的Python程序对别人进行展示的时候,你是否还是打开你的Pycharm进行运行展示? 假如是专业的人士看你的代码,一眼就能看懂你的代码,而其实我们可以不需要给代码,利用pyinst ...
- QT添加exe文件的图标LOGO
首先你需要一个ICO文件,这样的一个: 使用百度搜索到的在线工具直接生成一个ICO文件保存到本地就可以了 将这人LOGO.ico文件保存到自己的resource文件夹下 然后在工程中新建一个qrc文件 ...
- 动态修改PE文件图标(使用UpdateResource API函数)
PE文件的图标存储在资源文件中,而操作资源要用到的API函数就是UpdateResource首先我们需要先了解一下ICO格式,参考资料:http://www.moon-soft.com/program ...
随机推荐
- Qt音视频开发38-ffmpeg视频暂停录制的设计
一.前言 基本上各种播放器提供的录制视频接口,都是只有开始录制和结束录制两个,当然一般用的最多的也是这两个接口,但是实际使用过程中,还有一种可能需要中途暂停录制,暂停以后再次继续录制,将中间部分视频不 ...
- SHA256 64 位加密
/// <summary> /// SHA256 64位加密 /// </summary> /// <param name="input">&l ...
- 即时通讯技术文集(第31期):IM开发综合技术合集(Part4) [共13篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第31 期. [- 1 -] IM消息ID技术专题(一):微信的海量IM聊天消息序列号生成实践 ...
- 整理ML&AI学习路径图
干货分享: 下面给出一个笔者自己整理的GitHub仓库:https://github.com/isLinXu/awesome-road-map 里面包含了一些可供参考的学习路径和思维导图,并整理微软. ...
- 某苏人社异步JS逆向加解密分析(sm2+sm3+sm4)
前期准备 网址:aHR0cHM6Ly9ycy5qc2hyc3MuamlhbmdzdS5nb3YuY24vaW5kZXgv 目标: 接口请求内容加密和响应内容解密 请求头加密参数 Web-Encrypt ...
- 【译】在分析器中使用 Meter Histogram(直方图)解锁见解
您是否正在与应用程序中的性能瓶颈作斗争?不要再观望了!Visual Studio 2022 在其性能分析套件中引入了 Meter Histogram(直方图)功能,为您提供了前所未有的分析和可视化直方 ...
- Note / Solution Set -「Binomial Sum」两道例题
删本地文件的时候瞟了一眼内容 ... 这篇好像忘记发布了? 给定 \(n,k\), 求出 \[\textit{ans}=\sum_{i=0}^n\binom{n}{i}i^k\bmod(10^ ...
- arthas进行java应用不停服务情况下的class文件热部署更新
我们在工作的过程中会遇到java应用已经部署或升级投入使用,发现某个单元文件有bug需要修正,但是客户的应用目前不能停止,而且不能因为一个非致命的bug来进行整个平台的一次升级.我们需要进行单文件的更 ...
- dart中类详细讲解
dart是一门面向对象的语言 dart是一门实用类和单继承的面向对象的语言 在dart中所有的对象都是类的实例. 所有的类都是Object的子类 类都是有属性和方法组成的 定义一个类 在dart中,我 ...
- SOUI4新版本的日志系统介绍
原来的日志输出宏用法有点奇怪,感觉总是不够理想.这近有点时间终于把它重整了一下. 以前的用法就不介绍了,重点介绍一下新版本的用法. 在SOUI中使用的日志系统包含两个部分:日志输出宏及日志到文件的打印 ...