部署插件
本主题介绍如何部署插件库,以便 Qt 或您的应用程序在运行时加载。如果您使用静态插件,则插件代码已包含在应用程序可执行文件中,无需单独的部署步骤。
插件目录
在 Qt 中,当应用程序启动时,该应用程序的可执行文件所在目录即为 Qt 搜索插件的基目录。
例如,在 Windows 上,如果应用程序位于C:\Program Files\MyApp ,并且它有一个样式插件,则 Qt 会在C:\Program Files\MyApp\styles 中进行搜索。
要查找应用程序可执行文件的位置,请参阅QCoreApplication::applicationDirPath()。
Qt 还会搜索由QLibraryInfo::path (QLibraryInfo::PluginsPath )指定的目录,该目录通常位于QTDIR/plugins ;QTDIR 是 Qt 的安装目录。如果您希望 Qt 搜索其他位置,可以通过调用QCoreApplication::addLibraryPath() 添加任意数量的路径。如果您想设置自己的路径,可以使用QCoreApplication::setLibraryPaths()。
此外,您还可以使用qt.conf 文件来覆盖编译到 Qt 库中的硬编码路径。有关更多信息,请参阅《使用 qt.conf》。
另一种方法是在运行应用程序之前设置QT_PLUGIN_PATH 环境变量;多个路径可用系统路径分隔符分隔。设置后,Qt 将在该变量指定的路径中查找插件。
注意:请 勿将QT_PLUGIN_PATH 导出为全局环境变量,因为这可能会干扰其他 Qt 安装。
动态加载和验证插件
在加载插件时,Qt 库会进行一些基本检查,以确定该插件是否可以被加载和使用。这种基本检查使您能够并行安装多个 Qt 版本和配置。
适用以下规则:
- 与次版本号较高的 Qt 库链接的插件,不会被次版本号较低的库加载。
示例:Qt 6.2.0不会加载使用 Qt 6.3.0 构建的插件。示例:Qt 6.2.0 将加载使用 Qt 6.1.0 构建的插件。示例:Qt 6.2.0 将加载使用 Qt 6.2.1 构建的插件。 - 与主要版本号较低的 Qt 库链接的插件,将无法被主要版本号较高的库加载。
示例:Qt 6.0.0无法加载使用 Qt 5.15.0 构建的插件。
在构建用于扩展应用程序的插件时,务必确保插件的配置方式与应用程序一致。这意味着,如果应用程序是在发布模式下构建的,则插件也应以发布模式构建。但 Unix 操作系统除外,在该系统中,插件系统不会加载与应用程序构建模式不同的插件。
插件调试
存在一些问题,可能会导致编写正确的插件无法与设计用于使用它们的应用程序正常配合工作。其中许多问题与插件和应用程序的构建方式差异有关,通常源于各自独立的构建系统和流程。
若要从 Qt XML 获取其尝试加载的每个插件的诊断信息,请使用环境变量 `QT_DEBUG_PLUGINS `。在应用程序启动的环境中,将该变量设置为非零值。
下表描述了开发人员在创建插件时常遇到的问题及其可能的解决方案。
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 即使由应用程序直接打开,插件也会在后台静默加载失败。Qt Widgets Designer 在其“Help|About Plugins ”对话框中显示了插件库,但每个库下均未列出任何插件。 | 应用程序及其插件是在不同的模式下构建的。 | 请使用与可执行文件相同的配置来构建插件。 |
© 2026 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.