如何给生成的exe加图标

一、简述

今天就简单介绍一下如何给exe加图标,其实很简单,但是主要是为了讲述另一个问题,这也是之前遇到的一个容易忽略的问题。

首先我们了解一下一共有多少个图标可以设置。
看到下面这张图,我们首先会了解到生成的一个exe程序其实对应了三个图标,一个是exe本身的图标,一个是标题栏的图标,还有一个就是任务栏的图标。

这里写图片描述


不过还有一个隐藏的图标,就是任务栏悬浮窗口的图标。这个只有在任务栏设置中设置为始终隐藏标签时会显示(或者任务栏已满时),也就是应用程序在任务栏只显示图标不显示标题文字情况下,这里任务栏悬浮窗口会多出一个标题栏(见下图)。这样算下来一共四个图标可以设置。

这里写图片描述 这里写图片描述


这里写图片描述


二、如何自定义这些图标

  1. Qt提供了 setWindowIcon()方法,此方法可以设置标题栏图标、任务栏图标、任务栏悬浮窗口标题栏图标,但是修改不了exe的图标。所以如果需要修改exe 的图标此方法行不通。
this->setWindowIcon(QIcon(":/TestDialog/Resources/icon.jpg"));

这里写图片描述


  1. 使用资源文件,新建resource.rc文件在文件中添加如下代码即可。 此方法可以设置以上四个图标的样式。

IDI_ICON1 ICON “icon.ico”
这里写图片描述

如何添加资源文件

在VS中右键项目->添加->资源(QCreator中类似)

这里写图片描述


在本地会生成对应的 .rc文件

这里写图片描述


在 .rc文件中添加 IDI_ICON1 ICON “icon.ico” 即可。

这里写图片描述


但是此方法只能使用 .ico文件,如果使用jpg等文件会报错。
下面我把上面的icon.ico替换成了icon.jpg,编译报错。

IDI_ICON1 ICON “icon.jpg”

这里写图片描述


综上:

方法一可以使用多种格式的图片设置图标的样式,但是不能设置exe的图标。

方法二只能使用.ico文件作为图标使用,可以设置以上四个图标。
对于ico文件其实很简单,网上有专门转ico文件的网站。
http://www.easyicon.net/covert/
或者
http://app.xunjiepdf.com/img2icon

这里写图片描述

注意!!!

好了,上面介绍了两种方法,如果我们两种方法一起用会出现什么情况呢 ???

现在同时使用以上两种方法,但是使用不同的图标,然后看一下效果(见下图).

我们看到setWindowIcon 方法会覆盖 资源文件中设置的icon文件效果

也就是setWindowIcon优先级高于资源文件中设置的icon文件,这也就是我今天想说的一个重要的点。

之前就是因为代码中同时设置了这两个方法,但是忽略了代码中已经调用了setWindowIcon方法,然后通过修改资源文件中的图标文件,只修改了exe的图标,但是任务栏图标始终修改不了。调试了半天才发现是调用了setWindowIcon会覆盖资源文件中的图标样式。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/goforwardtostep/article/details/78623273