<QtPlugin> - Defining Plugins

Die <QtPlugin> Header-Datei definiert Makros zur Definition von Plugins. Mehr...

Header: #include <QtPlugin>

Makros

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

Detaillierte Beschreibung

Siehe auch Wie man Qt Plugins erstellt.

Makro-Dokumentation

Q_DECLARE_INTERFACE(ClassName, Identifier)

Dieses Makro assoziiert die angegebene Identifier (ein Stringliteral) mit der Schnittstellenklasse namens ClassName. Die Identifier muss eindeutig sein.

Dieses Makro wird normalerweise direkt nach der Klassendefinition für ClassName in einer Header-Datei verwendet.

Wenn Sie Q_DECLARE_INTERFACE mit Interface-Klassen verwenden wollen, die in einem Namespace deklariert sind, müssen Sie sicherstellen, dass Q_DECLARE_INTERFACE nicht in einem Namespace steht. Ein Beispiel:

namespace Foo
{
    struct MyInterface { ... };
}

Q_DECLARE_INTERFACE(Foo::MyInterface, "org.examples.MyInterface")

Siehe auch Q_INTERFACES() und How to Create Qt Plugins.

Q_IMPORT_PLUGIN(PluginName)

Dieses Makro importiert das Plugin mit dem Namen PluginName, was dem Namen der Klasse entspricht, die die Metadaten für das Plugin mit Q_PLUGIN_METADATA() deklariert.

Wenn Sie dieses Makro in den Quellcode Ihrer Anwendung einfügen, können Sie ein statisches Plugin verwenden.

Beispiel:

Q_IMPORT_PLUGIN(qjpeg)

Statische Plugins müssen auch vom Linker eingebunden werden, wenn Ihre Anwendung gebaut wird. Siehe Statische Plugins für weitere Informationen dazu.

Siehe auch Statische Plugins und Wie man Qt Plugins erstellt.

Q_PLUGIN_METADATA(...)

Dieses Makro wird verwendet, um Metadaten zu deklarieren, die Teil eines Plugins sind, das dieses Objekt instanziiert.

Das Makro muss die IID der Schnittstelle deklarieren, die durch das Objekt implementiert wird, und auf eine Datei verweisen, die die Metadaten für das Plugin enthält.

Es sollte genau ein Vorkommen dieses Makros im Quellcode eines Qt-Plugins geben.

Beispiel:

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

Beachten Sie, dass die Klasse, in der dieses Makro auftaucht, default-constructible sein muss.

FILE ist optional und verweist auf eine json-Datei.

Die json-Datei muss sich in einem der vom Build-System angegebenen Include-Verzeichnisse befinden. moc beendet sich mit einem Fehler, wenn es die angegebene Datei nicht finden konnte.

Siehe auch Q_DECLARE_INTERFACE() und How to Create Qt Plugins.

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