修改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的环境下,我们执行以下步骤:

  1. 右击项目,点击添加,选择资源文件



image-20230611142024270.png)

  1. 选择icon文件,点击导入

  1. 选择你自己制作好的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 resourceVERSIONINFO 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文件图标的更多相关文章

  1. 用UpdateResource修改EXE文件图标(已修正)

    //请自行添加到 Type 处PICONDIRENTRY = ^ICONDIRENTRY;ICONDIRENTRY = packed record bWidth: Byte; bHeight: Byt ...

  2. VC6.0生成的exe文件图标

    以下是我网上收到的方法 我都试过 成功不了 具体说下我遇到的问题 VC6.0生成的exe文件图标是用Icon下几个图标中value值最小的,顺序为IDR_MAINFRAME.IDR_ICONTETYP ...

  3. C语言Win32 Application 的标题栏图标,任务栏图标,exe文件图标问题

    我们这里新建的首先是一个空工程,新建c文件. 因为是空工程,我们没有资源文件,要用到图标资源,首先要新建和导入图标为资源. 选择引入资源,选择要引入的ico文件 完成,重命名保存Script_icon ...

  4. 直接读取修改exe文件

    1. 前言 配置器的编写有很多的方式,主要是直接修改原始的受控端的程序,有的方式是把受控端和配置信息都放到控制端程序的内部,在需要配置受控端的时候直接输入配置信息,生成受控端:也有的方式是在外部直接修 ...

  5. Win10系统桌面exe文件图标消失不见了的解决方法

    使用 Windows10正式版系统 过程中,发现桌面上的一些exe文件图标突然消失不见了.虽然这些exe程序还能够正常运行,可是感觉还是非常不舒服.这该怎么办呢?接下来,就随小编看看Windows10 ...

  6. Qt设置生成的exe文件图标

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_37354286/article/d ...

  7. qt的exe文件查找依赖的dll

    用qtcreater编译完工程生成的exe文件往往会依赖dll文件.如何一次定位exe文件所以依赖的所有dll文件呢,今天发现了软件叫hap-depends. 截图如下: 用这个软件打开exe文件就会 ...

  8. Python文件.py转换为.exe可执行程序,制作.exe文件图标

    当大家想要将自己写的Python程序对别人进行展示的时候,你是否还是打开你的Pycharm进行运行展示? 假如是专业的人士看你的代码,一眼就能看懂你的代码,而其实我们可以不需要给代码,利用pyinst ...

  9. QT添加exe文件的图标LOGO

    首先你需要一个ICO文件,这样的一个: 使用百度搜索到的在线工具直接生成一个ICO文件保存到本地就可以了 将这人LOGO.ico文件保存到自己的resource文件夹下 然后在工程中新建一个qrc文件 ...

  10. 动态修改PE文件图标(使用UpdateResource API函数)

    PE文件的图标存储在资源文件中,而操作资源要用到的API函数就是UpdateResource首先我们需要先了解一下ICO格式,参考资料:http://www.moon-soft.com/program ...

随机推荐

  1. Qt/C++推流程序自动生成网页远程查看实时视频流(视频文件/视频流/摄像头/桌面转成流媒体rtmp+hls+webrtc)

    一.前言说明 推流程序将视频流推送到流媒体服务器后,此时就等待验证拉流播放,一般可以选择ffplay命令行播放或者vlc等播放器打开播放,也可以选择网页直接打开拉流地址播放,一般主流的浏览器都支持网页 ...

  2. Python中的zip/unzip:像拉拉链一样组合数据的艺术

    今天让我们一起探讨Python中一个优雅而强大的内置功能: zip 和 unzip .听名字就知道,它就像我们衣服上的拉链一样,能把两边的数据完美地咬合在一起. 从一个有趣的例子开始 想象你正在开发一 ...

  3. 编译树莓派Linux内核

    1.建议边看视频边跟着教程走 https://www.bilibili.com/video/av91990721?zw 2.准备工作 下载官方提供的交叉编译工具链 git clone https:// ...

  4. python语法第二篇

    练习:输入一个长字符串,判断其中数字的个数. # 输入一个长字符串,判断其中数字的个数. s1 = input("请输入一个包含字母和数字的字符串:") # wdqwddwq78d ...

  5. tomcat常用配置详解和优化方法-copy

    tomcat常用配置详解和优化方法 参考: http://blog.csdn.net/zj52hm/article/details/51980194 http://blog.csdn.net/wuli ...

  6. Golang-web编程

    https://www.w3cschool.cn/yqbmht/7rcvwcqm.html 第一章 Go环境配置 欢迎来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的.带垃圾回收的. ...

  7. java代码之美(2)

    guava 复写Object常用方法 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方 ...

  8. 部署博客(docker)

    参考:链接 准备一台新的服务器 安全组:8080.80.3306等端口放通 安装docker 参考: 链接 获取最新镜像 docker pull b3log/solo 报错,可能是docker未启动, ...

  9. Jetpack架构组件学习(6)——使用Glance实现桌面小组件

    原文地址: Jetpack架构组件学习(6)--使用Glance实现桌面小组件-Stars-One的杂货小窝 公司陆续整了几个Compose写的app,有个小组件的功能,顺便试了下Jetpack库里的 ...

  10. SOUI4新版本的日志系统介绍

    原来的日志输出宏用法有点奇怪,感觉总是不够理想.这近有点时间终于把它重整了一下. 以前的用法就不介绍了,重点介绍一下新版本的用法. 在SOUI中使用的日志系统包含两个部分:日志输出宏及日志到文件的打印 ...