设置应用程序的图标

应用程序运行时, 顶级窗口左上角显示的图标可以调用 QWindow::setIcon() 方法设置.

如果你想改变可执行程序的显示图标, 或者说, 在文件管理器或桌面显示的图标 (即., 软件运行前), 那么, 你需要采用一种依赖平台的技术.

Setting the Application Icon on Windows

首先, 你需要创建一个包含图标图像的 ICO 格式的位图文件. 例如, 你可以打开 VS 20XX: 选择 文件|新建, 然后在对话框中选择 文件 选项卡, 然后选择 图标文件. (注意, 你不需要将应用程序加载到 VS 中; 这里我们仅使用图标编辑器.)

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

假设你使用 qmake 生成 makefile 文件, 你仅需要在 .pro 文件中添加一行代码:


  RC_ICONS = myappico.ico

最后, 重新生成 makefile 和应用程序. .exe 文件的图标变成上面自定义的图标.

但是, 如果你已经有一个 .rc 文件 ( 如, 文件名称是 myapp.rc), 且你想重用这个文件, 则需要执行以下两个步骤. 首先, 在 myapp.rc 文件中添加一行代码:


  IDI_ICON1               ICON    DISCARDABLE     "myappico.ico"

然后, 在 myapp.pro 文件中添加一行代码:


  RC_FILE = myapp.rc

如果你不想使用 qmake, 那么必要的步骤是: 首先, 创建一个 .rc 文件, 运行 rcwindres 程序处理 .rc 文件, 然后在你的程序中链接生成的 .res 文件.

Setting the Application Icon on macOS

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

为了确保在启动应用程序时以及在 Finder 中显示正确的图标, 有必要采用与平台相关的技术.

尽管许多程序可以创建图标文件 (.icns), 但推荐的方法是使用 Apple 提供的 iconutil 程序. iconutil 是一个命令行工具, 可将图标集文件夹转换为可部署的高分辨率 icns 文件. 使用此工具还会压缩生成的 icns 文件, 因此你无需执行额外的压缩.

如果你使用 qmake 生成 makefile, 则只需向 .pro 文件添加一行. 例如, 如果你的图标文件的名称是 myapp.icns, 并且你的项目文件是 myapp.pro, 在 myapp.pro 文件中添加一行代码:


  ICON = myapp.icns

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

如果你不使用 qmake, 你必须参照下列步骤:

  1. 为你的应用程序创建一个 Info.plist 文件 (使用 PropertyListEditor, 位于 Developer/Applications).
  2. 将你的 .icns 记录与 Info.plist 文件中的 CFBundleIconFile 记录关联 (再次使用 PropertyListEditor).
  3. Info.plist 文件复制到应用程序包的 Contents 目录.
  4. .icns 文件复制到应用程序包的 Contents/Resources 目录.

Setting the Application Icon on Common Linux Desktops

本节, 我们简要描述两种常见 Linux 桌面环境(KDEGNOME)的应用程序的图标问题. 应用程序图标的核心技术对于两个桌面来说是相同的, 并且也可能适用于其他桌面, 但有一些特定于每个桌面的细节. 有关这些 Linux 桌面所使用的标准的主要信息来源是 freedesktop.org.

通常, 用户不直接使用可执行文件, 而是通过单击桌面上的图标启动应用程序. 这些图标是 "桌面条目文件" 的表示, 包含应用程序的描述及图标的信息. 两种桌面环境都能够检索这些文件中的信息, 并使用它在桌面, 开始菜单和控制面板上生成应用程序的快捷方式.

有关桌面条目文件的更多信息可以在 the Desktop Entry Specification 中找到.

尽管桌面条目文件可以有效地封装应用程序的详细信息, 但我们仍然需要将图标存储在每个桌面环境的常规位置. Icon Theme Specification 中给出了许多图标位置.

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

K Desktop Environment (KDE)

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


  kde4-config --path icon

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


  qtpaths --locate-dirs GenericDataLocation icons

通常, 打印到标准输出的以冒号分隔的路径列表包括用户特定的图标路径和系统范围的路径. 在这些目录下, 你应该可以根据 Icon Theme Specification 中描述的约定找到并安装图标.

如果你专门为 KDE 进行开发, 你可能希望利用 KDE build system 配置你的应用程序. 这可确保你的图标安装在 KDE 的适当位置.

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

GNOME

应用程序图标存储在标准的系统目录中, 这些目录包含独立于体系结构的文件. 你可以使用 gnome-config 确定这个目录, 例如, 在终端窗口键入以下内容:


  gnome-config --datadir

stdout 上打印的路径包含 pixmaps 的目录位置; pixmaps 的目录结构在 Icon Theme Specification 中描述.

如果你专门为 GNOME, 进行开发, 你可能希望使用标准的 GNU Build Tools, 参见 GTK+/Gnome Application Development book. 这可确保你的图标安装在 GNOME 的适当位置.

GNOME 开发者网址是 http://developer.gnome.org/.