summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin/qplugin.qdoc
blob: dd4aa5f4b096e500216de37c73754e4c70c7a173 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only

/*!
    \headerfile <QtPlugin>
    \inmodule QtCore
    \title Defining Plugins
    \keyword qtplugin-defining-plugins
    \ingroup plugins

    \brief The <QtPlugin> header file defines macros for defining plugins.

    \sa {How to Create Qt Plugins}
*/

/*!
    \macro Q_DECLARE_INTERFACE(ClassName, Identifier)
    \relates <QtPlugin>

    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 <QtPlugin>
    \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 <QtPlugin>

    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}

*/