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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QQMLPROPERTY_H
#define QQMLPROPERTY_H
#include <QtCore/qstring.h>
#include <QtCore/qhashfunctions.h>
#include <QtQml/qtqmlglobal.h>
#include <QtCore/qmetaobject.h>
#include <QtQml/qqmlregistration.h>
QT_BEGIN_NAMESPACE
class QObject;
class QVariant;
class QQmlContext;
class QQmlEngine;
class QQmlPropertyPrivate;
class Q_QML_EXPORT QQmlProperty
{
Q_GADGET
QML_ANONYMOUS
QML_ADDED_IN_VERSION(2, 15)
Q_PROPERTY(QObject *object READ object CONSTANT FINAL)
Q_PROPERTY(QString name READ name CONSTANT FINAL)
public:
enum PropertyTypeCategory {
InvalidCategory,
List,
Object,
Normal
};
enum Type {
Invalid,
Property,
SignalProperty
};
QQmlProperty();
~QQmlProperty();
QQmlProperty(QObject *);
QQmlProperty(QObject *, QQmlContext *);
QQmlProperty(QObject *, QQmlEngine *);
QQmlProperty(QObject *, const QString &);
QQmlProperty(QObject *, const QString &, QQmlContext *);
QQmlProperty(QObject *, const QString &, QQmlEngine *);
QQmlProperty(const QQmlProperty &);
QQmlProperty &operator=(const QQmlProperty &);
QQmlProperty(QQmlProperty &&other) noexcept : d(std::exchange(other.d, nullptr)) {}
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QQmlProperty);
void swap(QQmlProperty &other) noexcept { qt_ptr_swap(d, other.d); }
bool operator==(const QQmlProperty &) const;
Type type() const;
bool isValid() const;
bool isProperty() const;
bool isSignalProperty() const;
int propertyType() const;
QMetaType propertyMetaType() const;
PropertyTypeCategory propertyTypeCategory() const;
const char *propertyTypeName() const;
QString name() const;
QVariant read() const;
static QVariant read(const QObject *, const QString &);
static QVariant read(const QObject *, const QString &, QQmlContext *);
static QVariant read(const QObject *, const QString &, QQmlEngine *);
bool write(const QVariant &) const;
static bool write(QObject *, const QString &, const QVariant &);
static bool write(QObject *, const QString &, const QVariant &, QQmlContext *);
static bool write(QObject *, const QString &, const QVariant &, QQmlEngine *);
bool reset() const;
bool hasNotifySignal() const;
bool needsNotifySignal() const;
bool connectNotifySignal(QObject *dest, const char *slot) const;
bool connectNotifySignal(QObject *dest, int method) const;
bool isWritable() const;
bool isBindable() const;
bool isDesignable() const;
bool isResettable() const;
QObject *object() const;
int index() const;
QMetaProperty property() const;
QMetaMethod method() const;
private:
friend class QQmlPropertyPrivate;
QQmlPropertyPrivate *d = nullptr;
};
typedef QList<QQmlProperty> QQmlProperties;
inline size_t qHash (const QQmlProperty &key, size_t seed = 0)
{
return qHashMulti(seed, key.object(), key.name());
}
Q_DECLARE_TYPEINFO(QQmlProperty, Q_RELOCATABLE_TYPE);
QT_END_NAMESPACE
#endif // QQMLPROPERTY_H
|