设置应用程序图标

如何设置您的应用程序图标。

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

为了更改可执行应用程序文件本身的图标,即其在桌面上显示的图标(即在应用程序启动之前),有必要采用另一种依赖于平台的技术。

在Windows上设置应用程序图标

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

注意

您不需要将应用程序加载到Visual Studio IDE中,因为您只使用图标编辑器。

或者,可以使用ImageMagick的convert工具从一组图像创建.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生成您的makefiles,您需要在您的.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文件并在该文件上运行rcwindres程序,然后将你的应用程序与生成的.res文件链接。

在macOS上设置应用程序图标

应用程序图标,通常显示在应用程序停靠区域,是通过在窗口上调用QWindow::setWindowIcon()来设置的。程序可能在函数调用之前出现在应用程序停靠区域,在这种情况下,弹跳动画期间将显示默认图标。

为了确保在应用程序启动时以及在Finder中显示正确的图标,有必要采用一种依赖于平台的技术。

尽管许多程序可以创建图标文件(.icns),但推荐的方法是使用苹果提供的iconutil程序。iconutil是一个命令行工具,可以将iconset文件夹转换为可用于部署的高分辨率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桌面环境的信息,请参阅您感兴趣的桌面环境的文档。

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

有关桌面入口文件的更多信息可以在Desktop Entry Specification中找到。

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

尽管用于定位图标的路径取决于使用的桌面及其配置,但每个路径下的目录结构应遵循相同的模式:子目录按主题、图标大小和应用程序类型排列。通常,应用程序图标会添加到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

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

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

KDE开发者网站位于http://techbase.kde.org/

GNOME

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

gnome-config --datadir

在标准输出上打印的路径指向一个应该包含名为pixmaps的目录的位置;pixmaps目录内的目录结构在图标主题规范中有描述。

如果您专门为GNOME开发,您可能希望使用标准的GNU构建工具集。有关更多信息,请参阅集成指南部分。这确保您的图标安装在GNOME的适当位置。

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