Using qt.conf

你可以使用 qt.conf 文件覆盖路径或指定要传递给平台插件的参数.

Format and Location

qt.conf 是一个 INI 文本文件, 描述参见 QSettings.

QLibraryInfo 从以下路径加载 qt.conf:

  1. :/qt/etc/qt.conf 使用 Qt 资源系统
  2. 在 macOS 系统上, 文件位于应用程序包内的资源目录中, 例如 assistant.app/Contents/Resources/qt.conf
  3. 应用程序的可执行文件路径, 即. QCoreApplication::applicationDirPath() + QDir::separator() + "qt.conf"

Overriding Paths

qt.conf 文件会覆盖编译到 Qt 库中的硬编码路径. 你可以使用 QLibraryInfo 访问这些路径. 如果没有 qt.conf, QLibraryInfo 中的函数返回这些硬编码路径; 否则, 返回 qt.conf 中指定的路径.

如果没有 qt.conf, Qt 库将使用硬编码路径来查找插件, 翻译等. 这些路径可能在目标系统上不存在, 或者可能无法访问. 因此, 你可能需要 qt.conf 使 Qt 库在其他地方查找.

这个文件应该有一个 Paths 组, 包含与 QLibraryInfo::LibraryLocation 枚举的每个值相对应的条目. 有关每个位置含义, 参见 QLibraryInfo.

EntryDefault Value
PrefixQCoreApplication::applicationDirPath()
Documentationdoc
Headersinclude
Librarieslib
LibraryExecutableslibexec
Binariesbin
Pluginsplugins
Importsimports
Qml2Importsqml
ArchData.
Data.
Translationstranslations
Examplesexamples
Teststests
Settings.

qt.conf 文件中使用的路径是相对路径. 所有的路径都相对于 Prefix. 在 Windows 和 X11 上, Prefix 相对于包含可执行文件的目录 (QCoreApplication::applicationDirPath()). 在 macOS 上, Prefix 与应用程序包中的 Contents 相关. 例如, application.app/Contents/plugins/ 是加载 Qt 插件的默认位置. 注意: 插件需要放置在 plugins 目录的特定子目录 (详见 How to Create Qt Plugins).

例如, qt.conf 文件可能包含以下内容:


  [Paths]
  Prefix = /some/path
  Translations = i18n

注意: 在 INI 文件中, 反斜杠被视为特殊字符 (参见 QSettings). 因此, 建议在 Windows 上也对路径使用正斜杠. 否则, 需要转义字符:


  Prefix = c:\\SomePath

Configuring Arguments to the Platform Plugins

qt.conf 可能包含一个 Platforms 组, 其键值是以逗号分隔的, 要传递给平台插件的参数列表. 键名称是平台插件的名称, 首字母大写, 后跟参数.

For example:


  [Platforms]
  WindowsArguments = fontengine=freetype

导致 Windows 平台插件使用 FreeType 字体引擎.