如何创建Qt插件

如何创建Qt插件

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

Qt提供了两个用于创建插件的API:

  • 用于编写Qt自身扩展的高级API:自定义数据库驱动程序,图像格式,文本编解码器,自定义样式等。
  • 用于扩展Qt应用程序的低级API。

 

高级API:编写Qt扩展

编写扩展Qt本身的插件是通过对相应的插件基类进行子类化,实现一些功能以及添加宏来实现的。

 

低级API:扩展Qt应用程序

通过插件不仅可以扩展Qt本身,而且可以扩展Qt应用程序。这要求应用程序使用QPluginLoader检测和加载插件。在这种情况下,插件可以提供任意功能,并且不仅限于数据库驱动程序,图像格式,文本编解码器,样式以及扩展Qt功能的其他类型的插件。

通过插件使应用程序可扩展涉及以下步骤:

  1. 定义一组用于与插件对话的接口(仅具有纯虚函数的类)。
  2. 使用Q_DECLARE_INTERFACE()宏告诉Qt的元对象系统有关接口的信息。
  3. 在应用程序中使用QPluginLoader加载插件。
  4. 使用qobject_cast()测试插件是否实现了给定的接口。

编写插件涉及以下步骤:

  1. 声明一个继承自QObject和该插件要提供的接口的插件类。
  2. 使用Q_INTERFACES()宏告诉Qt的元对象系统有关接口的信息。
  3. 使用Q_PLUGIN_METADATA()宏导出插件。
  4. 使用合适的.pro文件构建插件。

定位插件

Qt应用程序自动知道哪些插件可用,因为插件存储在标准插件子目录中。由于此应用程序不需要任何代码来查找和加载插件,因为Qt会自动处理它们。

在开发过程中,插件目录是QTDIR/pluginsQTDIRQt的安装目录在哪里),每种类型的插件都在该类型的子目录中,例如styles。如果您希望应用程序使用插件,而又不想使用标准插件路径,请让安装过程确定要用于插件的路径,然后保存该路径,例如,使用QSettings保存。运行时读取的应用程序。然后,应用程序可以使用此路径调用QCoreApplication :: addLibraryPath(),并且您的插件将对应用程序可用。请注意,路径的最后部分(例如styles)无法更改。

如果您希望插件可加载,则一种方法是在应用程序下创建一个子目录,并将插件放置在该目录中。如果分发Qt随附的任何插件(位于plugins目录中),则必须将plugins插件所在的子目录复制到应用程序的根文件夹(即,不包括plugins目录)。

静态插件

将插件包含在应用程序中的最普通,最灵活的方法是将其编译为单独提供的动态库,并在运行时进行检测和加载。

插件可以静态链接到您的应用程序。如果您构建静态版本的Qt,则这是包括Qt的预定义插件的唯一选项。使用静态插件使部署不太容易出错,但是缺点是,如果不完全重建和重新分发应用程序,则无法添加插件的功能。

要静态链接插件,您需要使用将必需的插件添加到构建中QTPLUGIN

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值