<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プラグインのソースコード中に1つだけ存在する必要があります。

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

このマクロが現れるクラスは、default-constructable でなければならないことに注意してください。

FILE はオプションで、json ファイルを指します。

jsonファイルは、ビルドシステムによって指定されたインクルードディレクトリの1つに存在する必要があります。指定されたファイルが見つからなかった場合、mocはエラーで終了します。

Q_DECLARE_INTERFACE() とQt プラグインの作成方法も参照してください

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。