<QtPlugin> - 定义插件

<QtPlugin>头文件定义了用于定义插件的宏。更多...

头文件 #include <QtPlugin>

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

详细描述

参见 如何创建 Qt 插件.

宏文档

Q_DECLARE_INTERFACE(ClassName, Identifier)

此宏将给定的 Identifier(一个字符串文字)与称为 ClassName 的接口类关联。标识符必须唯一。

这个宏通常在头文件中紧接在 ClassName 类的定义之后使用。

如果您想使用在命名空间中声明的接口类与 Q_DECLARE_INTERFACE 一起使用,则必须确保 Q_DECLARE_INTERFACE 不在命名空间内部。例如

namespace Foo
{
    struct MyInterface { ... };
}

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

参见 Q_INTERFACES() 和 如何创建 Qt 插件.

Q_IMPORT_PLUGIN(PluginName)

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

将此宏插入到您的应用程序源代码中,您就可以使用静态插件了。

示例

Q_IMPORT_PLUGIN(qjpeg)

在构建应用程序时,静态插件也必须由链接器包含。有关更多信息,请参阅静态插件

参见 静态插件如何创建 Qt 插件.

Q_PLUGIN_METADATA(...)

此宏用于声明作为该对象的实例之一部分的部分数据。

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

对于 Qt 插件,源代码中恰好应有一个此宏的出现。

示例

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

请注意,此宏所在的类必须是可以默认构造的。

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

json 文件必须位于构建系统指定的包含目录之一中。当 moc 无法找到指定的文件时,moc 会退出并显示错误。

参见 Q_DECLARE_INTERFACE() 和 如何创建 Qt 插件.

© 2024 Qt公司有限公司。本文件中包含的文档贡献为其各自所有者的版权。所提供的文档根据自由软件基金会发布的条款,在GNU自由文档许可协议版本1.3下许可。Qt及其相关标志是芬兰及/或世界其他国家的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。