设置应用程序图标

应用程序图标通常显示在应用程序顶层窗口的左上角,可通过调用QWindow::setIcon() 方法设置。

要更改显示在桌面上的可执行程序文件图标(即在程序启动前),必须使用另一种与平台相关的技术。

在 Windows 上设置应用程序图标

首先,创建一个包含图标图像的 ICO 格式位图文件。这可以使用 Microsoft Visual Studio 来完成:选择File >> New ,然后选择Icon File

注意: 您无需将应用程序加载到 Visual Studio IDE 中,因为您使用的只是图标编辑器。

另外,也可以使用 ImageMagick 的转换工具从一组图像中创建.ico 文件:

magick.exe convert icon-16.png icon-32.png icon-256.png icon.ico

将 ICO 文件保存在应用程序的源代码目录中,例如,文件名为appico.ico

在 Windows 上使用 CMake

要配置应用程序的图标,需要一个包含图标信息的资源文件。资源文件是一个文本文件,包含有关应用程序资源的信息,如图标、光标、字体等。有关资源文件及其包含内容的更多信息,请参阅关于资源文件

获得.rc 文件后,将有关 ICO 文件的信息添加到该文件中,并用它来配置应用程序图标。

下面的代码段演示了Photo Surface示例应用程序如何使用 CMake 设置应用程序图标:

    set(app_icon_resource_windows "${CMAKE_CURRENT_SOURCE_DIR}/resources/photosurface.rc")
    qt_add_executable(photosurfaceexample main.cpp ${app_icon_resource_windows})

注意set 命令定义了app_icon_windows 变量,其中包含 RC 文件的路径。该变量与add_executable 命令一起用于设置应用程序的图标。

在 Windows 上使用 qmake

如果仍在使用 qmake 生成 makefile,则需要在.pro 项目文件中添加一行:

RC_ICONS = myappico.ico

最后,重新生成 makefile 和应用程序。现在,资源管理器中的图标将代表.exe 文件。

但是,如果您已经有了一个.rc 文件,例如,名称为myapp.rc 的文件,您希望重复使用该文件,则需要以下两个步骤。首先,在myapp.rc 文件中加入一行文本:

IDI_ICON1               ICON    "myappico.ico"

然后,将这一行添加到myapp.pro 文件中:

RC_FILE = myapp.rc

如果不使用qmake ,必要的步骤是:首先创建一个.rc 文件,在.rc 文件上运行rcwindres 程序,然后将应用程序与生成的.res 文件链接。

在 macOS 上设置应用程序图标

在窗口上调用 QWindow::setWindowIcon() 可以设置应用程序图标,通常显示在应用程序停靠区。程序可能会在函数调用前出现在应用程序停靠区,在这种情况下,默认图标会在弹跳动画中出现。

为了确保程序启动时和 Finder 中都出现正确的图标,有必要采用一种与平台相关的技术。

虽然许多程序都能创建图标文件 (.icns),但推荐的方法是使用 Apple 提供的iconutil程序。iconutil是一个命令行工具,可将图标集文件夹转换为部署就绪的高分辨率 icns 文件。使用该工具还能压缩生成的 icns 文件,因此无需进行额外的压缩。

在 macOS 上使用 CMake

要配置应用程序的图标,CMake 生成的Info.plist 文件必须包含图标信息。这可以通过将.icns 文件名设置为MACOSX_BUNDLE_ICON_FILE 变量来实现。

下面的代码段演示了Photo Surface示例应用程序如何使用 CMake 设置应用程序图标:

    # The MACOSX_BUNDLE_ICON_FILE variable is added to the Info.plist
    # generated by CMake. This variable contains the .icns file name,
    # without the path.
    set(MACOSX_BUNDLE_ICON_FILE photosurface.icns)

    # And the following tells CMake where to find and install the file itself.
    set(app_icon_macos "${CMAKE_CURRENT_SOURCE_DIR}/resources/photosurface.icns")
    set_source_files_properties(${app_icon_macos} PROPERTIES
           MACOSX_PACKAGE_LOCATION "Resources")

    qt_add_executable(photosurfaceexample MACOSX_BUNDLE main.cpp ${app_icon_macos})

请注意,第一条set 命令定义了MACOSX_BUNDLE_ICON_FILE 变量,这是添加图标文件到Info.plist 文件所必需的。第二条set 命令用图标文件的绝对路径定义了app_icon_macos 变量。然后使用该变量配置 MACOSX_PACKAGE_LOCATION,它定义了图标文件的安装位置。最后,add_executable 使用app_icon_macOS 变量来设置应用程序的图标。

在 macOS 上使用 qmake

如果仍在使用 qmake 生成 makefile,只需在.pro 项目文件中添加一行即可。例如,如果你的图标文件名是myapp.icns ,而你的项目文件是myapp.pro ,请在myapp.pro 中添加这一行:

ICON = myapp.icns

这将确保qmake 将您的图标放到正确的位置,并为图标创建一个Info.plist 条目。

如果不使用qmake ,则必须手动执行以下操作:

  1. 为您的应用程序创建Info.plist 文件(使用Developer/Applications 中的PropertyListEditor )。
  2. .icns 记录与Info.plist 文件中的CFBundleIconFile 记录关联起来(同样使用PropertyListEditor )。
  3. Info.plist 文件复制到应用程序捆绑包的Contents 目录中。
  4. .icns 文件复制到应用程序捆绑包的Contents/Resources 目录中。

在常见 Linux 桌面上设置应用程序图标

在本节中,我们将简要介绍为两种常见 Linux 桌面环境的应用程序提供图标所涉及的问题:KDEGNOME。用于描述应用程序图标的核心技术在这两种桌面环境中都是相同的,也可能适用于其他桌面环境,但也有一些细节是每种桌面环境所特有的。有关这些 Linux 桌面使用的标准的主要信息来源是freedesktop.org。有关其他 Linux 桌面的信息,请参阅你感兴趣的桌面的文档。

用户通常不会直接使用可执行文件,而是通过点击桌面上的图标来启动应用程序。这些图标是 "桌面入口文件 "的代表,其中包含应用程序的描述,包括图标信息。两种桌面环境都能检索这些文件中的信息,并利用这些信息生成桌面、开始菜单和面板上的应用程序快捷方式。

有关桌面入口文件的更多信息,请参阅《桌面入口规范》。

虽然桌面条目文件可以有效封装应用程序的详细信息,但我们仍需要将图标存储在每个桌面环境的常规位置。图标主题规范》中给出了许多图标位置。

虽然定位图标的路径取决于所使用的桌面及其配置,但每个路径下的目录结构都应遵循相同的模式:子目录按主题、图标大小和应用程序类型排列。一般来说,应用程序图标会添加到 hicolor 主题中,因此一个 32 像素大小的正方形应用程序图标会存储在图标路径下的hicolor/32x32/apps 目录中。

K 桌面环境 (KDE)

应用程序图标可以安装给所有用户使用,也可以按用户安装。当前登录到 KDE 4 桌面的用户可以使用 kde4-config 发现这些位置,例如,在终端窗口中键入以下内容:

kde4-config --path icon

使用 Qt 5 和 KDE Frameworks 5 的应用程序将在该命令返回的列表中找到它们的图标:

qtpaths --locate-dirs GenericDataLocation icons

通常,打印到 stdout 的以冒号分隔的路径列表包括用户特定的图标路径和系统范围的路径。在这些目录下,可以根据图标主题规范中描述的约定找到并安装图标。

如果你是专门为 KDE 开发的,你可能希望利用KDE 构建系统来配置你的应用程序。这将确保您的图标安装在 KDE 的适当位置。

KDE 开发者网站是http://techbase.kde.org/。

GNOME

应用程序图标存储在一个标准的全系统目录中,该目录包含与体系结构无关的文件。该位置可通过gnome-config 确定,例如在终端窗口中键入以下内容:

gnome-config --datadir

打印在 stdout 上的路径指的是一个应包含名为pixmaps 的目录的位置;图标主题规范中描述了pixmaps 目录内的目录结构。

如果您只为 GNOME 进行开发,可能需要使用标准的 GNU 构建工具集。更多信息,请参阅集成指南部分。这将确保您的图标安装在 GNOME 的适当位置。

GNOME 开发者网站http://developer.gnome.org/ 提供了开发应用程序的更多信息。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.