// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! \headerfile \inmodule QtCore \title Defining Plugins \keyword qtplugin-defining-plugins \ingroup plugins \brief The header file defines macros for defining plugins. \sa {How to Create Qt Plugins} */ /*! \macro Q_DECLARE_INTERFACE(ClassName, Identifier) \relates This macro associates the given \a Identifier (a string literal) to the interface class called \a ClassName. The \a Identifier must be unique. For example: \snippet plugandpaint/app/interfaces.h 3 This macro is normally used right after the class definition for \a ClassName, in a header file. See the \l{tools/plugandpaint/app}{Plug & Paint} example for details. If you want to use Q_DECLARE_INTERFACE with interface classes declared in a namespace then you have to make sure the Q_DECLARE_INTERFACE is not inside a namespace though. For example: \snippet code/doc_src_qplugin.cpp 0 \sa Q_INTERFACES(), {How to Create Qt Plugins} */ /*! \macro Q_PLUGIN_METADATA(...) \relates \since 5.0 This macro is being used to declare meta data that is part of a plugin that instantiates this object. The macro needs to declare the IID of the interface implemented through the object, and reference a file containing the meta data for the plugin. There should be exactly one occurrence of this macro in the source code for a Qt plugin. Example: \snippet code/doc_src_qplugin.cpp 1 See the \l{tools/plugandpaint/app}{Plug & Paint} example for details. Note that the class this macro appears on must be default-constructible. FILE is optional and points to a json file. The json file must reside in one of the include directories specified by the build-system. moc exits with an error when it could not find the specified file. \sa Q_DECLARE_INTERFACE(), {How to Create Qt Plugins} */ /*! \macro Q_IMPORT_PLUGIN(PluginName) \relates This macro imports the plugin named \a PluginName, which corresponds with the name of the class that declares metadata for the plugin with Q_PLUGIN_METADATA(). Inserting this macro into your application's source code will allow you to make use of a static plugin. Example: \snippet code/doc_src_qplugin.cpp 2 Static plugins must also be included by the linker when your application is built. See \l{Static Plugins} for more information on this. \sa {Static Plugins}, {How to Create Qt Plugins} */