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 ...
随机推荐
- Spring Security并结合JWT实现用户认证(Authentication) 和用户授权(Authorization)
引言在Web应用开发中,安全一直是非常重要的一个方面.Spring Security基于Spring 框架,提供了一套Web应用安全性的完整解决方案. JwT (JSON Web Token) 是当前 ...
- Mac安装CMake
官网下载CMake: 传送门:https://cmake.org/download/ image.png 安装完打开: image.png 选择Tools-->How to instal ...
- Mac 配置多版本JDK
@ 目录 前言 一.下载并安装多个JDK版本 二.配置环境变量 三.切换JDK版本 四.下篇预告!!! 总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i. 提示:以下是本篇文章正文 ...
- Qt编写地图综合应用10-点聚合
一.前言 点聚合在地图相关应用中比较常用,比如在地图上查询结果通常以标记点的形式展现,但是如果标记点较多,不仅会大大增加客户端的渲染时间,让客户端变得很卡,而且会让人产生密集恐惧症,密密麻麻的一大堆点 ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v7.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持 UDP .TCP .WebSocket 三种协议,支持 iOS ...
- 在OERV也可以玩MC(上)
最近发现一个比较有意思的事情,原来HMCL这个项目也移植到RISC-V上了,之前一直没有发现,因此在OERV(openEuler RISC-V的简称)玩MC也是可以的了.首先,HMCL是一款功能丰富的 ...
- Nginx-总结列表
Nginx配置详解 Nginx实现前后端分离,反向代理.负载均衡 Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 .它支持内核 Poll 模型,能经受高负载的考验,有报告表明 ...
- codeblocks调试时怎样查看全局变量?
问题: 办法: watch窗口下面第一列输入 ::c
- Kevin pg walkthrough Easy
第二个window 靶机 尝试访问 80 web界面 然后是个登录界面 我尝试admin admin 登录成功 发现版本 发现了exp https://www.exploit-db.com/explo ...
- dart中Set类型详解
01==> Set 它的主要功能是去除重复的数组内容: Set是没有顺序且不能够重复的数组,所以不能够通过索引值去获取内容 var s = new Set(); s.add('苹果'); s.a ...