如何在基于Qt的项目中设置应用程序图标?

67

如何为使用Qt制作的应用程序设置应用程序图标?有什么简单的方法吗?这是一个基于qmake的项目。


这取决于你要针对哪个平台:请参阅Qt的文档 - Fred
5个回答

105

对于 Qt 5,此过程由 qmake 自动完成。只需将以下内容添加到项目文件中:

win32:RC_ICONS += your_icon.ico
自动化资源文件生成还使用以下qmake变量的值:VERSION,QMAKE_TARGET_COMPANY,QMAKE_TARGET_DESCRIPTION,QMAKE_TARGET_COPYRIGHT,QMAKE_TARGET_PRODUCT,RC_LANG,RC_CODEPAGE
对于Qt 4,您需要手动完成此项工作。在Windows上,您需要创建一个.rc文件并将其添加到项目(.pro)中。RC文件应如下所示:
IDI_ICON1 ICON DISCARDABLE "path_to_you_icon.ico"

.pro文件条目也应该是win32特定的,例如:

win32:RC_FILE += MyApplication.rc

11
为了安全起见,您应该使用win32:RC_FILE += MyApplication.rc。意思是将此代码放入您的项目文件中,以确保在Windows系统上正确地编译和构建您的应用程序。 - dwj
1
在Unity中如何做?标准文档不够充分,在我的Ubuntu 12.04中找不到gnome-config。 - Barış Akkurt
4
为什么还没有跨平台的解决方案?我希望在Debian可执行文件上(还有Mac上?)也能显示相同的图标。 - feedc0de
1
@dwj,你所说的“安全”,是什么意思? - McLan
1
如何在Linux/RHEL6上完成这个任务? - Anurag Singh
显示剩余8条评论

20

已在Linux (Qt 4.8.6)和Windows (Qt 5.6)中验证:

1)将图标文件添加到您的项目文件夹中;

2)在主函数中调用setWindowIcon()方法。例如:

QApplication a(argc, argv);
a.setWindowIcon(QIcon("./images/icon.png"));

11
这是窗口打开时的图标(例如标题栏上的图标)。原帖作者想要在文件管理器中打开程序时看到该图标,例如当您使用鼠标单击时。 - Sigur

3

为了扩展Rob的回答,您可以通过在.pro文件中添加和修改以下行来为macOS设置应用程序图标。

macx: ICON = <app_icon>.icns

请注意,ICON qmake 变量 仅适用于 macOS。
对于 Windows,请使用:
  • RC_ICONS = <app_icon>.ico(如果您要附加 .ico 文件)
  • 或者 RC_FILE = <app_icon>.rc(如果您想通过 .rc 文件附加图标。请确保将 IDI_ICON1 ICON DISCARDABLE "myappico.ico" 添加到 rc 文件中。缩进不是我的问题。)
欲了解更多信息,请参阅 设置应用程序图标

2

对于在Windows上使用Qt5,将您的ico文件移动到项目文件夹中,并在.pro文件中添加以下行:

RC_ICONS = myappico.ico

官方链接:https://doc.qt.io/qt-5/appicon.html


-2

现在Qt已经升级到5.0.1版本,有了一种新的方法来添加应用程序图标。首先,您需要准备一个资源文件,命名为.qrc

1)如果没有使用Qt Designer,我假设有一个名为MainWinQMainWindow实例。您可以使用以下代码:

QIcon icon(":icon/app.icon"); 
MainWin.setWindowIcon(icon);

2) 使用 Qt Designer,您可以修改 QMainWindow 的属性。从 .qrc 中选择图标资源,并将其插入到 windowIcon 的行中。

以上方法适用于 Qt4.7、Qt4.8.x。


22
你错了。你的方法是用于设置窗体图标而不是应用程序图标。 - drzymala
1
这并没有回答问题提出者的问题。 - tarabyte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接