Loading

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的帮助文档里面写了关于怎样修改图标的说明,文档如下:
RC_ICONS

✨ 首先你需要有一个xxx.ico文件(xxx.ico就是你需要修改的图标的文件名字)

✨ 然后把xxx.ico文件放到你的工程文件目录下(也就是你的pro文件所在的目录)

✨ 然后在.pro文件中添加RC_ICONS = xxx.ico

✨ 保存,然后重新构建就可以了,这个方法能够修改资源管理器以及程序运行时的图标。

通过.rc文件修改

Qt的帮助文档同样有:
RC_FILES

✨ 首先你需要有一个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的图标以及窗口标题的设置,下一期,我们讲一讲,怎么设置某种后缀的文件默认打开软件以及关联某种后缀的文件图标,敬请期待!

创作不易,如果本篇文章对你有帮助,烦请点赞、收藏支持一下🥳

posted @ 2022-09-03 19:46  师从名剑山  阅读(1629)  评论(0编辑  收藏  举报