设置应用程序图标
应用程序图标通常显示在应用程序顶级窗口的左上角,通过调用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 生成您的 makefile,则需要在您的 .pro
项目文件中添加一行
RC_ICONS = myappico.ico
最后,重新生成您的 makefile 和您的应用程序。现在,在资源管理器中,.exe
文件将表示为您的图标。
然而,如果您已经有一个(例如,命名为 myapp.rc
)并希望重用的 .rc
文件,则需要以下两个步骤。首先,将一行文本置于 myapp.rc
文件中
IDI_ICON1 ICON "myappico.ico"
然后,将此行添加到您的 myapp.pro
文件中
RC_FILE = myapp.rc
如果您不使用qmake
,必要的步骤是:首先,创建一个.rc
文件,然后在.rc
或windres
程序上运行此.rc
文件,接着将您的应用程序与生成的.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生成您的makefiles,您只需在您的.pro
项目文件中添加一行即可。例如,如果您的图标文件名为myapp.icns
,并且您的项目文件为myapp.pro
,请将此行添加到myapp.pro
ICON = myapp.icns
这将确保qmake将您的图标置于正确的位置,并为图标创建一个Info.plist
条目。
如果您不使用qmake
,您必须手动执行以下操作
- 为您的应用程序创建一个
Info.plist
文件(使用位于Developer/Applications
中的PropertyListEditor
)。 - 将您的
.icns
记录与Info.plist
文件中的CFBundleIconFile
记录关联起来(同样,使用PropertyListEditor
)。 - 将
Info.plist
文件复制到您的应用程序包的Contents
目录中。 - 将
.icns
文件复制到您的应用程序包的Contents/Resources
目录中。
在常见Linux桌面上设置应用程序图标
在本节中,我们将简要描述为两个常见的Linux桌面环境提供应用程序图标涉及的问题:KDE和GNOME。这两个桌面使用来描述应用程序图标的核心技术是相同的,也可能适用于其他桌面,但也有一些是特定于每个的。关于这些Linux桌面使用标准的详细信息,主要来源是freedesktop.org。有关其他Linux桌面的信息,请参考您感兴趣桌面的文档。
通常情况下,用户不是直接使用可执行文件,而是通过点击桌面上的图标来启动应用程序。这些图标是“桌面入口文件”的表示,其中包含有关应用程序及其图标的描述。这两个桌面环境都能够检索这些文件中的信息,并使用这些信息在桌面、启动菜单和面板上生成应用程序的快捷方式。
有关桌面入口文件的更多信息,可以在桌面入口规范中找到。
尽管桌面入口文件可以有效地封装应用程序的详细信息,但我们仍然需要将图标存储在每个桌面环境的传统位置。在图标主题规范中给出了一些图标的位置。
尽管用于定位图标的路径取决于所使用的桌面及其配置,但这下面的每个目录结构都应该遵循相同的模式:子目录按主题、图标大小和应用程序类型排列。通常,应用程序图标添加到hicolor主题,因此32像素大小的正方形应用图标将存储在图标路径下的hicolor/32x32/apps
目录中。
桌面环境(KDE)
可以为所有用户或基于每个用户安装应用程序图标。目前登录到他们的KDE 4桌面的用户可以通过使用 kde4-config 发现这些位置,例如,在终端窗口中键入以下内容
kde4-config --path icon
使用Qt 5和KDE框架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/提供了有关开发应用程序的更多信息。
© 2024 The Qt Company Ltd. 此处包含的文档贡献的版权属于其各自的所有者。此处提供的文档是根据自由软件基金会在GNU自由文档许可证版本1.3的条款许可的。Qt及其相关标志是芬兰的Qt Company Ltd.及其在全世界各地的商标。所有其他商标均为其各自所有者的财产。