QT部署插件

部署插件

https://doc.qt.io/qt-5/deployment-plugins.html

本主题说明如何为Qt部署插件库或在运行时加载您的应用程序。如果您使用静态插件,那么插件代码已经是应用程序可执行文件的一部分,并且不需要单独的部署步骤。

插件目录

在Qt中,当应用程序启动时,应用程序的可执行目录是Qt搜索插件的基本目录。

例如,在Windows上,如果应用程序在其中C:\Program Files\MyApp并且具有样式插件,则Qt将在中查找C:\Program Files\MyApp\styles

要找出应用程序可执行文件的位置,请参见QCoreApplication :: applicationDirPath()。

Qt还会查找由QLibraryInfo :: locationQLibraryInfo :: 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 5.0.0将不会加载使用Qt 5.0.1构建的插件。

  • 具有较低主要版本号的Qt库链接的插件将不会由具有较高主要版本号的库加载。


    示例: Qt 5.0.1将不会加载使用Qt 4.8.2构建的插件。
    示例: Qt 5.1.1将加载使用Qt 5.1.0和Qt 5.0.3构建的插件。

在构建用于扩展应用程序的插件时,重要的是确保以与应用程序相同的方式配置插件。这意味着,如果应用程序以发布模式构建,则插件也应以发布模式构建。除Unix操作系统外,插件系统不会加载以与应用程序不同的模式构建的插件。

如果将Qt配置为以调试和发布模式构建,而仅以发布模式构建应用程序,则需要确保插件也以发布模式构建。默认情况下,如果Qt的调试版本可用,则插件将在调试模式下构建。要强制在发布模式下构建插件,请将以下行添加到插件的project(.pro)文件中:

CONFIG += release

这样可以确保插件与应用程序中使用的库版本兼容。

 

调试插件

有许多问题可能会阻止正确编写的插件与旨在使用它们的应用程序一起使用。其中许多与插件和应用程序构建方式的差异有关,通常是由单独的构建系统和流程引起的。

要从Qt获取有关尝试加载的每个插件的诊断信息,请使用QT_DEBUG_PLUGINS环境变量。在启动应用程序的环境中将此变量设置为非零值。

下表描述了开发人员在创建插件和可能的解决方案时遇到的问题的常见原因。

问题原因
即使直接由应用程序打开,插件也无法加载。Qt Designer在其“帮助|关于插件”对话框中显示了插件库,但每个插件下均未列出插件。该应用程序及其插件以不同的模式构建。通过在每个项目文件debug_and_releaseCONFIG变量后面附加,可以共享相同的构建信息,也可以在调试和发布模式下构建插件。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt Creator是一个跨平台的集成开发环境(IDE),用于开发基于Qt框架的应用程序。它提供了丰富的功能和工具,方便开发者进行代码编辑、调试、构建和部署等操作。Qt Creator还支持插件开发,允许开发者根据自己的需求扩展和定制IDE的功能。 插件开发是通过使用Qt Creator提供的API来实现的。下面是一些关键的步骤和概念: 1. 创建插件项目:在Qt Creator中,可以使用"New Project"向导创建一个插件项目。选择"Qt Creator Plugin"模板,并按照向导的指导完成项目的创建。 2. 插件结构:插件项目通常包含一个插件类(继承自`ExtensionSystem::IPlugin`)和一个插件描述文件(`.json`格式)。插件类负责实现插件的逻辑,而描述文件用于声明插件的元数据和依赖关系。 3. 插件接口:Qt Creator提供了一系列的接口(如`Core::IEditor`、`ProjectExplorer::IProjectManager`等),用于扩展和定制IDE的功能。插件可以实现这些接口,并在适当的时机注册到Qt Creator中。 4. 插件生命周期:插件Qt Creator启动时被加载,并在IDE的整个生命周期中保持活动状态。插件可以通过重写插件类的虚函数来响应不同的事件和操作。 5. 插件通信:插件之间可以通过信号和槽、接口调用等方式进行通信。Qt Creator还提供了一些全局的服务(如`Core::EditorManager`、`ProjectExplorer::SessionManager`等),插件可以使用这些服务来获取和操作IDE中的资源。 如果你想深入了解Qt Creator插件开发的细节,可以参考Qt Creator的官方文档和示例代码。官方文档提供了详细的API参考和开发指南,示例代码则展示了如何使用API来实现常见的插件功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值