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 ...
随机推荐
- 如何判断平台是x86还是arm
case $(uname -m) in x86_64) echo x86;; aarch64) echo arm;; esac ref 上面的代码片改自这里 https://stackoverflow ...
- Qt编写项目作品27-多线程文件传输
一.功能特点 多线程收发文件,支持加密传输. 接收端支持监听端口接收文件和主动连接服务器接收文件两种方式. 按照 文件开始符+文件大小+文件内容+文件结束符 逐个分包接收. 可对接收的加密过的文件包进 ...
- 并发和并行 | Python中实现多线程 threading 和多进程 multiprocessing
并发和并行 | Python中实现多线程 threading 和多进程 multiprocessing 昨天晚上组会轮到我汇报技术内容,最近正在和 ray 以及 spark 打交道,索性讲一下并发和并 ...
- 关于 static 和 final 的一些理解
今天主要回顾一下 static 和 final 这两个关键字. 1. static - 静态 修饰符 - 用于修饰数据(变量.对象).方法.代码块以及内部类. 1.1 静态变量 用 ...
- HBase-4MapReduce
集成分析 HBase表中的数据最终都是存储在HDFS上,HBase天生的支持MR的操作,我们可以通过MR直接处理HBase表中的数据,并且MR可以将处理后的结果直接存储到HBase表中. 参考地址:h ...
- w3cschool-网站建设
W3C 简介 什么是 W3C? W3C 指万维网联盟(World Wide Web Consortium) W3C 创建于1994年10月 W3C 由 Tim Berners-Lee 创建 W3C 是 ...
- e-prime2.0 安装
先卸载之前的 卸载 1.点开之前安装的文件.exe 2.选择remove,即卸载 打开注册表 1.开始-运行:输入regedit 2.然后找到并删除注册表中: HKEY_CURRENT_USER\So ...
- VulNyx-Secrets
扫端口 扫描80端口发现有个secrets目录 还有个注释 继续扫发现http://192.168.200.11/secrets/login_form.php 有这个登录框 估计就是要爆破 usern ...
- dart方法之间的调用和可选参数的使用
01==> 方法封装 void main() { //直接调用 say('好好读书,天天向上'); } say(say) { print(say); } 02==>方法之间的调用 void ...
- AI编程:Coze + Cursor实现一个思维导图的浏览器插件
这是小卷对AI编程工具学习的第3篇文章,今天以实际开发一个思维导图的需求为例,了解AI编程开发的整个过程 1.效果展示 2.AI编程开发流程 虽然AI编程知识简单对话就行,不过咱要逐步深入到项目开发中 ...