修改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. 关于Jetson nano (B02)如何部署Yolov8以及一些必要的知识点

    一.前言 记录一个简单的安装和部署过程,尽管笔者也是按照教程来的,但奈何参考了很多教程,虽然写的都非常好,但是却很散,因此笔者这里想把这些教程的精华提炼出来,汇总并且写在正文处.还是老规矩,笔者也在学 ...

  2. Qt/C++编写网络摄像头推流(4路1080P主码流只占用0.2%CPU/极低延时极速响应)

    一.前言说明 将从网络摄像头拉流过来的视频流重新推流出去,是目前一个很常规的做法,尤其是推流到流媒体服务中心,这样流媒体服务中心就把散落在各个区域的监控摄像头集中起来统一管理,同时提供对外一致的访问接 ...

  3. Vetur can't find `tsconfig.json` or `jsconfig.json` in XXX

    vue界面启动项目 visual code报错 如下图,找到 Ignore Project Warning 前边打上对勾

  4. 即时通讯安全篇(九):为什么要用HTTPS?深入浅出,探密短连接的安全性

    本文由ELab技术团队分享,原题"探秘HTTPS",有修订和改动. 1.引言 对于IM开发者来说,IM里最常用的通信技术就是Socket长连接和HTTP短连接(通常一个主流im会是 ...

  5. Datawhale AI 夏令营-天池Better Synth多模态大模型数据合成挑战赛-task2探索与进阶(更新中)

    在大数据.大模型时代,随着大模型发展,互联网数据渐尽且需大量处理标注,为新模型训练高效合成优质数据成为新兴问题."天池 Better Synth - 多模态大模型数据合成挑战赛"应 ...

  6. 大模型复现实践记录-在linux环境4090GPU(24G)

    chatglm-6b chatglm2-6b tigerbot-7b baichuan-7b vicuna

  7. VSCode远程开发Linux内核驱动

    受够了Vim的换台电脑就要倒腾N天配置的折磨,受够了Windows下Source Insight眼花的界面.这些软件虽然很多人在用,但是缺点也不少.然而Linux内核代码非常庞大,编译内核又需要在Li ...

  8. Dynamic CRM最常用的3种查询方式

    在crm系统中 接口或者插件中 通常都会有查询的校验 实际上单查询的话 不用crm提供的方式也可以 直接用sql的方式去查,一般涉及到很多表的联动查询比如报表查询时,还是用sql更方便   一.Que ...

  9. uwp 图像处理例子

    async void test() { Color replaceBlack = Color.FromArgb(224,233,55,6); Color replaceWhite = Color.Fr ...

  10. Elasticsearch(6) --- Query查询和Filter查询

    这篇博客主要分为 :Query查询和Filter查询.有关复合查询.聚合查询也会单独写篇博客. 一.概念 1.概念 一个查询语句究竟具有什么样的行为和得到什么结果,主要取决于它到底是处Query还是F ...