41class Q_QML_EXPORT QQmlPropertyPrivate final :
public QQmlRefCounted<QQmlPropertyPrivate>
49 Q_DECLARE_FLAGS(InitFlags, InitFlag);
52 enum class ListCopyResult
59 QQmlRefPointer<QQmlContextData> context;
60 QPointer<QQmlEngine> engine;
61 QPointer<QObject> object;
63 QQmlPropertyData core;
64 QQmlPropertyData valueTypeData;
69 static bool resolveUrlsOnAssignment();
71 QQmlPropertyPrivate() {}
73 QQmlPropertyIndex encodedIndex()
const
74 {
return encodedIndex(core, valueTypeData); }
75 static QQmlPropertyIndex encodedIndex(
const QQmlPropertyData &core,
const QQmlPropertyData &valueTypeData)
76 {
return QQmlPropertyIndex(core.coreIndex(), valueTypeData.coreIndex()); }
78 QQmlRefPointer<QQmlContextData> effectiveContext()
const;
80 void initProperty(QObject *obj,
const QString &name, InitFlags flags = InitFlag::None);
81 void initDefault(QObject *obj);
83 bool isValueType()
const;
84 QMetaType propertyType()
const;
85 QQmlProperty::Type type()
const;
86 QQmlProperty::PropertyTypeCategory propertyTypeCategory()
const;
88 QVariant readValueProperty();
89 bool writeValueProperty(
const QVariant &, QQmlPropertyData::WriteFlags);
91 static QQmlMetaObject rawMetaObjectForType(QMetaType metaType);
92 static bool writeEnumProperty(
const QMetaProperty &prop,
int idx, QObject *object,
93 const QVariant &value,
int flags);
94 static bool writeValueProperty(QObject *,
95 const QQmlPropertyData &,
const QQmlPropertyData &valueTypeData,
96 const QVariant &,
const QQmlRefPointer<QQmlContextData> &,
97 QQmlPropertyData::WriteFlags flags = {});
98 static bool resetValueProperty(QObject *,
99 const QQmlPropertyData &,
const QQmlPropertyData &valueTypeData,
100 const QQmlRefPointer<QQmlContextData> &,
101 QQmlPropertyData::WriteFlags flags = {});
104
105
106
107
108
109
110 static ListCopyResult convertToQQmlListProperty(QQmlListProperty<QObject> *listProperty,
111 QMetaType actualListType,
112 const QVariant &value);
113 static QVariant convertToWriteTargetType(
const QVariant &value, QMetaType targetMetaType);
114 static bool write(QObject *,
const QQmlPropertyData &,
const QVariant &,
115 const QQmlRefPointer<QQmlContextData> &,
116 QQmlPropertyData::WriteFlags flags = {});
117 static bool reset(QObject *,
const QQmlPropertyData &,
118 QQmlPropertyData::WriteFlags flags = {});
119 static void findAliasTarget(QObject *, QQmlPropertyIndex, QObject **, QQmlPropertyIndex *);
123 QObject *targetObject;
124 QQmlPropertyIndex targetIndex;
127
128
129
130
131 static ResolvedAlias findAliasTarget(QObject *baseObject, QQmlPropertyIndex baseIndex);
138 Q_DECLARE_FLAGS(BindingFlags, BindingFlag)
140 static void setBinding(QQmlAbstractBinding *binding, BindingFlags flags = None,
141 QQmlPropertyData::WriteFlags writeFlags = QQmlPropertyData::DontRemoveBinding);
143 static bool removeBinding(
const QQmlProperty &that, BindingFlags flags = None);
144 static bool removeBinding(QObject *o, QQmlPropertyIndex index, BindingFlags flags = None);
145 static bool removeBinding(QQmlAbstractBinding *b, QQmlPropertyPrivate::BindingFlags flags = None);
146 static QQmlAbstractBinding *binding(QObject *, QQmlPropertyIndex index);
148 static QQmlProperty restore(QObject *,
const QQmlPropertyData &,
const QQmlPropertyData *,
149 const QQmlRefPointer<QQmlContextData> &);
151 int signalIndex()
const;
153 static inline QQmlPropertyPrivate *get(
const QQmlProperty &p) {
return p.d; }
156 static QQmlAbstractBinding *binding(
const QQmlProperty &that);
157 static void setBinding(
const QQmlProperty &that, QQmlAbstractBinding *);
158 static QQmlBoundSignalExpression *signalExpression(
const QQmlProperty &that);
159 static void setSignalExpression(
const QQmlProperty &that, QQmlBoundSignalExpression *);
160 static void takeSignalExpression(
const QQmlProperty &that, QQmlBoundSignalExpression *);
161 static bool write(
const QQmlProperty &that,
const QVariant &, QQmlPropertyData::WriteFlags);
162 static QQmlPropertyIndex propertyIndex(
const QQmlProperty &that);
163 static QMetaMethod findSignalByName(
const QMetaObject *mo,
const QByteArray &);
164 static QMetaProperty findPropertyByName(
const QMetaObject *mo,
const QByteArray &);
165 static bool connect(
const QObject *sender,
int signal_index,
166 const QObject *receiver,
int method_index,
167 int type = 0,
int *types =
nullptr);
168 static void flushSignal(
const QObject *sender,
int signal_index);
170 static QList<QUrl> urlSequence(
const QVariant &value);
171 static QList<QUrl> urlSequence(
172 const QVariant &value,
const QQmlRefPointer<QQmlContextData> &ctxt);
173 static QQmlProperty create(
174 QObject *target,
const QString &propertyName,
175 const QQmlRefPointer<QQmlContextData> &context,
176 QQmlPropertyPrivate::InitFlags flags);