<QtPlugin> - 定義插件

< QtPlugin > 頭文件定義用於定義插件的宏。 更多...

頭: #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 快速入門 .

    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 插件 .

    內容