<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")
};

なお、このマクロが記述されるクラスは、デフォルトコンストラクタでインスタンス化可能である必要があります。

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.