<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 プラグインの作成方法も参照してください

© 2025 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.