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