win和linux下如何给Qt应用程序添加图标

给程序添加图标,包含2个部分:

  • 第一个,是可执行文件的图标或桌面快捷方式图标;
  • 第二个,是程序运行时窗口的图标。

分别如下:

win和linux下如何给Qt应用程序添加图标_第1张图片 win和linux下如何给Qt应用程序添加图标_第2张图片

接下来,我们分别在windows和linux下,讲解如何设置这2种图标。

一、在windows系统下

1、设置应用程序图标(第一种方法)

(1)准备一张ico图标

在这里插入图片描述

图标文件名为:shehui.ico

(2)创建res.rc文件

内容为:

IDI_ICON1 ICON DISCARDABLE "shehui.ico"

(3)修改pro文件

在pro中加入如下内容:

RC_FILE += res.rc

重新编译,生成exe。

效果如下:

win和linux下如何给Qt应用程序添加图标_第3张图片 win和linux下如何给Qt应用程序添加图标_第4张图片

可以发现,我们并没有对程序窗口调用setWindowIcon函数,但是程序运行窗口就已经可以显示图标了,这只是在windows上是这样而已。通过上述的一次操作就实现了设置文件图标和窗口图标。

特别注意:

最近,发现这样设置图标后,会导致程序版本信息消失。

即我们在pro文件中,添加如下程序版本信息:

VERSION = "1.2.0.1"
QMAKE_TARGET_PRODUCT  = "this is a great product"
QMAKE_TARGET_COMPANY = Mingsen
QMAKE_TARGET_DESCRIPTION = greater
QMAKE_TARGET_COPYRIGHT = copyright(2020)

然后在代码中获取版本信息:

// xxx == "1.2.0.1"
QString xxx = QApplication::applicationVersion();

这是正常情况应该为"1.2.0.1",但是只要通过这个方式设置图标后,那么得到的xxx就等于空了。

具体是什么原因,没去细看。

所以这种方法不推荐使用。

2、设置应用程序图标(第二种方法)

也是最简单的,在pro中添加如下:

RC_ICONS = shehui.ico

重新编译,即可,实现效果与前面一种方法一样,文件和窗口同时具备了图标。

小结:

推荐使用这种方法,最简单,效果也一样。但是上面介绍的2种方法都仅对win系统有效,linux下无效。在linux下,无论是文件,还是运行窗口图标都无效。

二、在linux系统下

在linux系统下,文件也有图标,不过对于可执行文件,一般来讲是没有必要设置其文件图标的。但是可以设置其桌面快捷方式的图标。

1、设置桌面快捷方式图标

linux下是通过desktop文件来实现的,基本原理就是在该文件中填写一些应用程序相关的信息,然后将它拷贝到一个固定目录下,就可以在桌面上看到一个图标。

配置*.desktop桌面快捷方式文件

在这里插入图片描述

它有如下内容,需要编辑:

[Desktop Entry]
Type=Application
Name=My Test                    #应用的名字(快捷方式显示的文字)
Exec=/opt/Test/Test             #应用的执行路径(绝对路径)
Icon=/opt/Test/Test.png         #应用的图标(绝对路径)
Comment=This is my test         #说明信息
Terminal=true                   #是否允许在终端启动

我们按照上述内容进行编辑,其中图标,自己随便去下载一个.png放到/opt/Test/Test.png即可。

然后,直接把它扔到桌面文件夹(~/Desktop/),它就可以变成一个带图标的快捷方式,类似win。

我们双击该图标,就可以启动/opt/Test/Test程序。

桌面快捷方式图标创建也是很简单的。

注意:

.desktop文件需要有执行权限,该文件才能变成图标,否则只是显示一个普通文件,所以需要chmod一下。

Terminal=true时,启动程序时,会附带启动终端界面,即会出现2个界面。

Terminal=false时,启动程序时,没有终端界面,仅显示程序这一个界面。

2、设置程序运行时窗口的图标

在linux下,想要设置运行时窗口图标,只能通过调用函数的方式实现。

我们知道界面上窗口基类都是QWidget,有个setWindowIcon函数,可以设置窗口图标,但这只是设置一个窗口的图标。

想要让所有的窗口都设置一个默认图标的话,可以调用QApplication::setWindowIcon函数为应用程序设置一个默认图标,这样,所有的窗口都有图标了。



若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在这里插入图片描述

你可能感兴趣的:(QT,Qt程序图标)