\ - 定义插件

QtPlugin 头文件定义用于定义插件的宏。

属性 方法
头文件 #include \

宏名
Q_DECLARE_INTERFACE(ClassName, Identifier)
Q_IMPORT_PLUGIN(PluginName)
Q_PLUGIN_METADATA()

详细介绍

另请参阅 如何创建 Qt 插件

宏文档

Q_DECLARE_INTERFACE(ClassName, Identifier)

该宏将给定的 Identifier(字符串字面量)与名为 ClassName 的接口类关联。Identifier 必须是唯一的。例如:

  1. #define BrushInterface_iid "org.qt-project.Qt.Examples.PlugAndPaint.BrushInterface/1.0"
  2. Q_DECLARE_INTERFACE(BrushInterface, BrushInterface_iid)

通常在头文件中 ClassName 的类定义之后立即使用此宏。有关详细信息,请参见插件与绘制示例。

如果要对命名空间中的接口类使用 Q_DECLARE_INTERFACE,请务必保证 Q_DECLARE_INTERFACE 不在命名空间中。例如:

  1. namespace Foo
  2. {
  3. struct MyInterface { ... };
  4. }
  5. Q_DECLARE_INTERFACE(Foo::MyInterface, "org.examples.MyInterface")

另请参阅 Q_INTERFACES() 和如何创建 Qt 插件

Q_IMPORT_PLUGIN(PluginName)

该宏导入名为 PluginName 的插件,该插件与使用 Q_PLUGIN_METADATA() 声明插件元数据的类的名称相对应。

将该宏插入应用程序的源代码来使您能够使用静态插件。

例如:

  1. Q_IMPORT_PLUGIN(qjpeg)

构建应用程序时,链接器必须包含静态插件。对于 Qt 预定义的插件,可以使用 QTPLUGIN 将插件加入你的构建系统。例如:

  1. TEMPLATE = app
  2. QTPLUGIN += qjpeg qgif # image formats

另请参阅 静态插件如何创建 Qt 插件以及 qmake 入门

Q_PLUGIN_METADATA()

该宏用于声明插件元数据,它是实例化此对象的插件的一部分。

该宏需要声明通过该对象实现的接口的 IID,并引用包含该插件的元数据的文件。

对于某一个 Qt 插件,该宏在源代码中应恰好出现一次。

示例:

  1. class MyInstance : public QObject
  2. {
  3. Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDummyPlugin" FILE "mymetadata.json")
  4. };

有关详细信息,请参见插件与绘制示例。

请注意,该宏出现的类必须是可默认构造的。

FILE是可选的,并指向一个 json 文件。

该 json 文件必须存在于构建系统指定的包含目录之一中。当找不到指定文件时,moc 将退出并显示错误。

该宏在 Qt 5.0 中引入。

另请参阅 Q_DECLARE_INTERFACE() 和如何创建 Qt 插件