Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
extension.h
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
// Qt-Security score:significant reason:default
4
5
#
ifndef
EXTENSION_H
6
#
define
EXTENSION_H
7
8
#
include
<
QtDesigner
/
extension_global
.
h
>
9
10
#
include
<
QtCore
/
qstring
.
h
>
11
#
include
<
QtCore
/
qobject
.
h
>
12
13
QT_BEGIN_NAMESPACE
14
15
#
define
Q_TYPEID
(
IFace
)
QLatin1StringView
(
IFace
##
_iid
)
16
17
class
QDESIGNER_EXTENSION_EXPORT
QAbstractExtensionFactory
18
{
19
public
:
20
virtual
~QAbstractExtensionFactory();
21
22
virtual
QObject *extension(QObject *object,
const
QString &iid)
const
= 0;
23
};
24
Q_DECLARE_INTERFACE
(
QAbstractExtensionFactory
,
"org.qt-project.Qt.QAbstractExtensionFactory"
)
25
26
class
QDESIGNER_EXTENSION_EXPORT
QAbstractExtensionManager
27
{
28
public
:
29
virtual
~QAbstractExtensionManager();
30
31
virtual
void
registerExtensions(QAbstractExtensionFactory *factory,
const
QString &iid) = 0;
32
virtual
void
unregisterExtensions(QAbstractExtensionFactory *factory,
const
QString &iid) = 0;
33
34
virtual
QObject *extension(QObject *object,
const
QString &iid)
const
= 0;
35
};
36
Q_DECLARE_INTERFACE
(
QAbstractExtensionManager
,
"org.qt-project.Qt.QAbstractExtensionManager"
)
37
38
template
<
class
T>
39
inline
T qt_extension(QAbstractExtensionManager *, QObject *)
40
{
return
nullptr
; }
41
42
#
define
Q_DECLARE_EXTENSION_INTERFACE
(
IFace
,
IId
)
const
43
char
*
const
IFace
##
_iid
=
IId
;
Q_DECLARE_INTERFACE
44
(
IFace
,
IId
)
template
45
<
>
inline
IFace
*
qt_extension
<
IFace
*
>
(
QAbstractExtensionManager
*
manager
,
QObject
*
object
)
\
46
{
QObject
*
extension
=
manager
->
extension
(
object
,
Q_TYPEID
(
IFace
)
)
;
return
extension
?
static_cast
<
IFace
*
>
(
extension
->
qt_metacast
(
IFace
##
_iid
)
)
:
static_cast
<
IFace
*
>
(
nullptr
)
;
}
47
48
QT_END_NAMESPACE
49
50
#
endif
// EXTENSION_H
QAbstractExtensionFactory
The QAbstractExtensionFactory class provides an interface for extension factories in \QD.
Definition
extension.h:18
QAbstractExtensionManager
The QAbstractExtensionManager class provides an interface for extension managers in \QD.
Definition
extension.h:27
Q_TYPEID
#define Q_TYPEID(IFace)
Definition
extension.h:15
Q_DECLARE_INTERFACE
Q_DECLARE_INTERFACE(QNetworkAccessBackendFactory, QNetworkAccessBackendFactory_iid)
qttools
src
designer
src
lib
extension
extension.h
Generated on
for Qt by
1.18.0