40class Q_QML_EXPORT QQmlPropertyPrivate final :
public QQmlRefCounted<QQmlPropertyPrivate>
48 Q_DECLARE_FLAGS(InitFlags, InitFlag);
50 QQmlRefPointer<QQmlContextData> context;
51 QPointer<QQmlEngine> engine;
52 QPointer<QObject> object;
54 QQmlPropertyData core;
55 QQmlPropertyData valueTypeData;
60 static bool resolveUrlsOnAssignment();
62 QQmlPropertyPrivate() {}
64 QQmlPropertyIndex encodedIndex()
const
65 {
return encodedIndex(core, valueTypeData); }
66 static QQmlPropertyIndex encodedIndex(
const QQmlPropertyData &core,
const QQmlPropertyData &valueTypeData)
67 {
return QQmlPropertyIndex(core.coreIndex(), valueTypeData.coreIndex()); }
69 QQmlRefPointer<QQmlContextData> effectiveContext()
const;
71 void initProperty(QObject *obj,
const QString &name, InitFlags flags = InitFlag::None);
72 void initDefault(QObject *obj);
74 bool isValueType()
const;
75 QMetaType propertyType()
const;
76 QQmlProperty::Type type()
const;
77 QQmlProperty::PropertyTypeCategory propertyTypeCategory()
const;
79 QVariant readValueProperty();
80 bool writeValueProperty(
const QVariant &, QQmlPropertyData::WriteFlags);
82 static QQmlMetaObject rawMetaObjectForType(QMetaType metaType);
83 static bool writeEnumProperty(
const QMetaProperty &prop,
int idx, QObject *object,
84 const QVariant &value,
int flags);
85 static bool writeValueProperty(QObject *,
86 const QQmlPropertyData &,
const QQmlPropertyData &valueTypeData,
87 const QVariant &,
const QQmlRefPointer<QQmlContextData> &,
88 QQmlPropertyData::WriteFlags flags = {});
89 static bool resetValueProperty(QObject *,
90 const QQmlPropertyData &,
const QQmlPropertyData &valueTypeData,
91 const QQmlRefPointer<QQmlContextData> &,
92 QQmlPropertyData::WriteFlags flags = {});
93 static bool write(QObject *,
const QQmlPropertyData &,
const QVariant &,
94 const QQmlRefPointer<QQmlContextData> &,
95 QQmlPropertyData::WriteFlags flags = {});
96 static bool reset(QObject *,
const QQmlPropertyData &,
97 QQmlPropertyData::WriteFlags flags = {});
98 static void findAliasTarget(QObject *, QQmlPropertyIndex, QObject **, QQmlPropertyIndex *);
102 QObject *targetObject;
103 QQmlPropertyIndex targetIndex;
106
107
108
109
110 static ResolvedAlias findAliasTarget(QObject *baseObject, QQmlPropertyIndex baseIndex);
117 Q_DECLARE_FLAGS(BindingFlags, BindingFlag)
119 static void setBinding(QQmlAbstractBinding *binding, BindingFlags flags = None,
120 QQmlPropertyData::WriteFlags writeFlags = QQmlPropertyData::DontRemoveBinding);
122 static bool removeBinding(
const QQmlProperty &that, BindingFlags flags = None);
123 static bool removeBinding(QObject *o, QQmlPropertyIndex index, BindingFlags flags = None);
124 static bool removeBinding(QQmlAbstractBinding *b, QQmlPropertyPrivate::BindingFlags flags = None);
125 static QQmlAbstractBinding *binding(QObject *, QQmlPropertyIndex index);
127 static QQmlProperty restore(QObject *,
const QQmlPropertyData &,
const QQmlPropertyData *,
128 const QQmlRefPointer<QQmlContextData> &);
130 int signalIndex()
const;
132 static inline QQmlPropertyPrivate *get(
const QQmlProperty &p) {
return p.d; }
135 static QQmlAbstractBinding *binding(
const QQmlProperty &that);
136 static void setBinding(
const QQmlProperty &that, QQmlAbstractBinding *);
137 static QQmlBoundSignalExpression *signalExpression(
const QQmlProperty &that);
138 static void setSignalExpression(
const QQmlProperty &that, QQmlBoundSignalExpression *);
139 static void takeSignalExpression(
const QQmlProperty &that, QQmlBoundSignalExpression *);
140 static bool write(
const QQmlProperty &that,
const QVariant &, QQmlPropertyData::WriteFlags);
141 static QQmlPropertyIndex propertyIndex(
const QQmlProperty &that);
142 static QMetaMethod findSignalByName(
const QMetaObject *mo,
const QByteArray &);
143 static QMetaProperty findPropertyByName(
const QMetaObject *mo,
const QByteArray &);
144 static bool connect(
const QObject *sender,
int signal_index,
145 const QObject *receiver,
int method_index,
146 int type = 0,
int *types =
nullptr);
147 static void flushSignal(
const QObject *sender,
int signal_index);
149 static QList<QUrl> urlSequence(
const QVariant &value);
150 static QList<QUrl> urlSequence(
151 const QVariant &value,
const QQmlRefPointer<QQmlContextData> &ctxt);
152 static QQmlProperty create(
153 QObject *target,
const QString &propertyName,
154 const QQmlRefPointer<QQmlContextData> &context,
155 QQmlPropertyPrivate::InitFlags flags);