<QtPlugin> - Defining Plugins

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

Header: #include <QtPlugin>

宏

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

详细说明

另请参阅 《如何创建 Qt 插件》。

宏文档

Q_DECLARE_INTERFACE(ClassName, Identifier)

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

该宏通常在头文件中,紧跟在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 无法找到指定的文件,将以错误退出。

另请参阅 Q_DECLARE_INTERFACE() 以及《如何创建 Qt 插件》。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.