QtPlugin定义插件

QtPlugin定义插件

目录

QtPlugin定义插件

Q_DECLARE_INTERFACE(ClassName, Identifier)

Q_IMPORT_PLUGIN(PluginName)

Q_PLUGIN_METADATA(...)

学习参考文章

Q_DECLARE_INTERFACE(ClassName, Identifier)
Q_IMPORT_PLUGIN(PluginName)
Q_PLUGIN_METADATA(...)


Q_DECLARE_INTERFACE(ClassName, Identifier)

  • 这个宏将给定的标识符(一个字符串字面值)关联到名为ClassName的接口类。标识符必须是唯一的。例如:
#define BrushInterface_iid "org.qt-project.Qt.Examples.PlugAndPaint.BrushInterface/1.0"

Q_DECLARE_INTERFACE(BrushInterface, BrushInterface_iid)
  • 这个宏通常在头文件中,在ClassName的类定义之后使用。详情请参阅Plug & Paint示例。
  • 如果你想在命名空间中声明的接口类中使用Q_DECLARE_INTERFACE,那么你必须确保Q_DECLARE_INTERFACE不在命名空间中。例如:
namespace Foo
{
    struct MyInterface { ... };
}

Q_DECLARE_INTERFACE(Foo::MyInterface, "org.examples.MyInterface")

Q_IMPORT_PLUGIN(PluginName)

  • 这个宏导入名为PluginName的插件,它与用Q_PLUGIN_METADATA()声明插件元数据的类的名称相对应。
  • 将此宏插入到应用程序的源代码中将允许您使用静态插件。
  • 例子:
Q_IMPORT_PLUGIN(qjpeg)
  • 在构建应用程序时,链接器还必须包含静态插件。对于Qt的预定义插件,您可以使用QTPLUGIN添加所需的插件到您的构建。例如:
TEMPLATE      = app
QTPLUGIN     += qjpeg qgif    # image formats

Q_PLUGIN_METADATA(...)

  • 此宏用于声明元数据,该元数据是实例化此对象的插件的一部分。
  • 宏需要声明通过对象实现的接口的IID,并引用包含插件元数据的文件。
  • 在Qt插件的源代码中,这个宏应该只出现一次。
  • 例如:
class MyInstance : public QObject
{
    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDummyPlugin" FILE "mymetadata.json")
};
  • 详情请参阅 Plug & Paint示例。
  • 注意,这个宏出现的类必须是默认构造的。
  • FILE是可选的,指向一个json文件。
  • json文件必须驻留在构建系统指定的一个include目录中。当无法找到指定的文件时,Moc退出并出现错误。
  • 这个函数是在Qt 5.0中引入的。

学习参考文章

QT插件学习系列(一) 初识QtPlugin

Qt学习--Qt Plugin创建及调用2(插件管理器)

Qt学习--Qt Plugin创建及调用3(接口间通信)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值