<QtPlugin> - 定义插件

The <QtPlugin> header file defines macros for defining plugins. 更多...

Header: #include <QtPlugin>

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

    详细描述

    另请参阅 如何创建 Qt 插件 .

    宏文档编制

    Q_DECLARE_INTERFACE ( ClassName , Identifier )

    此宏关联给定 Identifier (字符串文字) 到接口类称为 ClassName Identifier 必须是唯一的。例如:

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

    通常,此宏被正确使用在定义类之后,对于 ClassName ,在 Header 头文件中。见 插件和描绘 范例了解细节。

    若想要使用 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 预定义插件,可以使用 QTPLUGIN 将所需插件添加到您的构建中。例如:

    TEMPLATE      = app
    QTPLUGIN     += qjpeg qgif    # image formats
    							

    另请参阅 静态插件 , 如何创建 Qt 插件 ,和 qmake 快速入门 .

    [since 5.0] 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 带错误退出当找不到指定文件时。

    该函数在 Qt 5.0 引入。

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