17#include <private/qjsvalue_p.h>
18#include <private/qv4functionobject_p.h>
19#include <private/qv4qobjectwrapper_p.h>
20#include <private/qqmlbuiltinfunctions_p.h>
21#include <private/qqmlirbuilder_p.h>
22#include <QtQml/private/qqmllist_p.h>
26#include <private/qmetaobject_p.h>
27#include <private/qqmlvaluetypewrapper_p.h>
28#include <QtCore/qdebug.h>
30#include <QtQml/QQmlPropertyMap>
31#include <QtCore/private/qproperty_p.h>
32#include <QtCore/qsequentialiterable.h>
197 QQmlPropertyPrivate::InitFlags
flags)
215 return ::compatResolveUrlsOnAssigment();
230 QQmlPropertyPrivate::InitFlags
flags)
240 if (
path.isEmpty())
return;
243 for (
int ii = 0; ii <
path.size() - 1; ++ii) {
251 if (
r.type.isValid()) {
257 if (!currentObject)
return;
258 }
else if (
r.importNamespace) {
259 if (++ii ==
path.size())
264 path.at(ii),
r.importNamespace);
266 if (!
r.type.isValid())
278 }
else if (
r.scriptIndex != -1) {
299 for (
auto idContext =
context; idContext; idContext = idContext->
parent()) {
300 const int objectId = idContext->propertyIndex(pathName.
toString());
301 if (objectId != -1 && objectId < idContext->numIdValues()) {
311 }
else if (
property->isFunction()) {
318 if (!valueTypeMetaObject)
return;
321 if (idx == -1)
return;
327 object = currentObject;
336 if (
auto asPropertyMap = qobject_cast<QQmlPropertyMap*>(currentObject))
337 currentObject = asPropertyMap->value(
path.at(ii).toString()).value<
QObject*>();
341 property->readProperty(currentObject, ¤tObject);
344 if (!currentObject)
return;
351 }
else if (!currentObject) {
355 auto findSignalInMetaObject = [&](
const QByteArray &signalName) {
360 object = currentObject;
366 auto findChangeSignal = [&](
QStringView signalName) {
368 if (signalName.endsWith(changed)) {
371 while (
d &&
d->isFunction())
374 if (
d &&
d->notifyIndex() != -1) {
375 object = currentObject;
388 for (firstNon_ = 0; firstNon_ <
length; ++firstNon_)
389 if (signalName.
at(firstNon_) != u
'_')
391 signalName[firstNon_] = signalName.
at(firstNon_).
toLower();
396 signalName, currentObject,
context);
401 while (
d && !
d->isFunction())
405 object = currentObject;
410 if (findChangeSignal(signalName))
412 }
else if (findSignalInMetaObject(signalName.
toUtf8())) {
419 terminal, currentObject,
context);
424 object = currentObject;
437 object = currentObject;
443 findChangeSignal(terminal);
450 object = currentObject;
456 findSignalInMetaObject(terminal.
toUtf8());
646 return d ? d->
object :
nullptr;
825 if (!newBinding->
ref)
834 int coreIndex =
index.coreIndex();
835 int valueTypeIndex =
index.valueTypeIndex();
839 if (!
data || !
data->hasBindingBit(coreIndex))
843 oldBinding =
data->bindings;
860 oldBinding->removeFromObject();
888 object = aliasTarget.targetObject;
889 index = aliasTarget.targetIndex;
895 const int coreIndex =
index.coreIndex();
896 const int valueTypeIndex =
index.valueTypeIndex();
898 if (coreIndex < 0 || !data->hasBindingBit(coreIndex))
906 if (
binding && valueTypeIndex != -1) {
924 data->propertyCache?
data->propertyCache->property(coreIndex):
nullptr;
925 if (propertyData && propertyData->
isAlias()) {
928 QObject *aObject =
nullptr;
int aCoreIndex = -1;
int aValueTypeIndex = -1;
929 if (vme->
aliasTarget(coreIndex, &aObject, &aCoreIndex, &aValueTypeIndex)) {
931 Q_ASSERT(valueTypeIndex == -1 || aValueTypeIndex == -1);
934 if (aValueTypeIndex != -1) {
936 }
else if (valueTypeIndex != -1) {
940 findAliasTarget(aObject, aBindingIndex, targetObject, targetBindingIndex);
970 if (
data->propertyCache) {
1003 signalHandler = signalHandler->m_nextSignal;
1044 signalHandler = signalHandler->m_nextSignal;
1046 if (signalHandler) {
1055 signal->takeExpression(expr);
1157 return object->metaObject()->property(
core.
coreIndex()).read(
object);
1161 void *
args[] = {
nullptr, &
value, &status };
1162 if (
core.
propType() == QMetaType::fromType<QVariant>()) {
1183 if (
value.metaType() == QMetaType::fromType<QUrl>()) {
1185 }
else if (
value.metaType() == QMetaType::fromType<QString>()) {
1187 }
else if (
value.metaType() == QMetaType::fromType<QByteArray>()) {
1189 }
else if (
value.metaType() == QMetaType::fromType<QStringList>()) {
1191 const int urlStringsSize = urlStrings.size();
1193 for (
int i = 0;
i < urlStringsSize; ++
i)
1205 for (
auto urlIt = urls.
begin(); urlIt != urls.
end(); ++urlIt)
1206 *urlIt = ctxt->resolvedUrl(*urlIt);
1220 if (
v.userType() == QMetaType::QString) {
1239 void *argv[] = {
v.data(), &
v, &status, &
flags };
1260template<
typename Op>
1263 QQmlPropertyData::WriteFlags
flags,
int internalIndex, Op op)
1265 wrapper->read(
object, coreIndex);
1267 wrapper->write(
object, coreIndex,
flags, internalIndex);
1271template<
typename Op>
1275 int internalIndex, Op op)
1296 QQmlPropertyData::WriteFlags
flags)
1306 return write(wrapper, valueTypeData, value, context, flags);
1322 return reset(wrapper, valueTypeData, flags);
1332 QQmlPropertyData::WriteFlags
flags)
1338 void *argv[] = {&bindable};
1340 untypedBinding = bindable.
binding();
1342 priv->setSticky(
true);
1347 if (untypedBinding.
isNull())
1350 priv->setSticky(
false);
1370 || variantMetaType == QMetaType::fromType<QString>()
1373 return {
false,
false};
1376 if (variantMetaType == QMetaType::fromType<QJSValue>()) {
1380 = QJSValuePrivate::asManagedType<QV4::FunctionObject>(&jsValue);
1381 if (
f &&
f->isBinding()) {
1383 f->engine(),
object, &
property,
f->asReturnedValue());
1384 return {
true,
true};
1389 switch (propertyMetaType.
id()) {
1390 case QMetaType::Bool:
1391 if (
value.canConvert(propertyMetaType)) {
1393 return {
true,
property.writeProperty(
object, &
b,
flags)};
1395 return {
false,
false};
1396 case QMetaType::Int: {
1399 return {
ok,
ok &&
property.writeProperty(
object, &
i,
flags)};
1401 case QMetaType::UInt: {
1404 return {
ok,
ok &&
property.writeProperty(
object, &u,
flags)};
1406 case QMetaType::Double: {
1409 return {
ok,
ok &&
property.writeProperty(
object, &
d,
flags)};
1411 case QMetaType::Float: {
1414 return {
ok,
ok &&
property.writeProperty(
object, &
f,
flags)};
1416 case QMetaType::QString:
1417 if (
value.canConvert(propertyMetaType)) {
1419 return {
true,
property.writeProperty(
object, &
s,
flags)};
1421 return {
false,
false};
1422 case QMetaType::QVariantMap:
1423 if (
value.canConvert(propertyMetaType)) {
1425 return {
true,
property.writeProperty(
object, &
m,
flags)};
1427 return {
false,
false};
1435 converted =
QVariant(propertyMetaType);
1437 propertyMetaType, converted.
data())) {
1438 return {
false,
false};
1441 return {
true,
property.writeProperty(
object, converted.
data(),
flags)};
1444template<
typename Op>
1461 const void *
end = metaSequence.
constEnd(container);
1477 const QMetaType propertyMetaType =
property.propType();
1486 if (variantMetaType == QMetaType::fromType<double>()) {
1488 double fractional = std::modf(
value.toDouble(), &integral);
1490 v.convert(QMetaType::fromType<qint32>());
1496 const bool isUrl = propertyMetaType == QMetaType::fromType<QUrl>();
1499 if (propertyMetaType == variantMetaType && !isUrl
1501 return property.writeProperty(
object,
const_cast<void *
>(
value.constData()),
flags);
1505 if (variantMetaType == QMetaType::fromType<std::nullptr_t>()) {
1508 varType = QMetaType::fromType<QObject*>();
1511 varType = variantMetaType;
1523 return property.writeProperty(
object, &
o,
flags);
1528 return property.writeProperty(
object, &
o,
flags);
1534 return result.couldWrite;
1535 }
else if (propertyMetaType == QMetaType::fromType<QVariant>()) {
1539 if (variantMetaType == QMetaType::fromType<QUrl>()) {
1544 else if (variantMetaType == QMetaType::fromType<QByteArray>())
1546 else if (variantMetaType == QMetaType::fromType<QString>())
1551 return property.writeProperty(
object, &u,
flags);
1553 QList<QUrl> urlSeq = compatResolveUrlsOnAssigment()
1556 return property.writeProperty(
object, &urlSeq,
flags);
1561 if (valueMetaObject.
isNull())
1565 property.readProperty(
object, &prop);
1580 const auto doAppend = [&](
QObject *
o) {
1583 propAppend(&prop,
o);
1586 if (variantMetaType == QMetaType::fromType<QQmlListReference>()) {
1589 doAppend(qdlr.
at(ii));
1602 if (useNonsignalingListOps) {
1606 }
else if (variantMetaType == propertyMetaType) {
1608 property.writeProperty(
object,
v.data(),
flags);
1617 }
else if (enginePriv && propertyMetaType == QMetaType::fromType<QJSValue>()) {
1621 return property.writeProperty(
object, &jsValue,
flags);
1623 Q_ASSERT(variantMetaType != propertyMetaType);
1627 if (variantMetaType == QMetaType::fromType<QString>())
1632 if (
v.convert(propertyMetaType)) {
1644 propertyMetaType,
v.data(),
1645 QMetaType::fromType<QSequentialIterable>(),
1652 if (variantMetaType == elementMetaType) {
1655 }
else if (variantMetaType == QMetaType::fromType<QVariantList>()) {
1658 if (valueElement.metaType() == elementMetaType) {
1660 propertyContainer, valueElement.constData());
1662 QVariant converted(elementMetaType);
1664 valueElement.metaType(), valueElement.constData(),
1665 elementMetaType, converted.
data());
1667 propertyContainer, converted.
constData());
1675 const auto doAppend = [&](
QObject *
o) {
1677 propertyMetaSequence.
addValueAtEnd(propertyContainer, &casted);
1681 doAppend(*
static_cast<QObject *
const *
>(
value.data()));
1683 }
else if (variantMetaType == QMetaType::fromType<QQmlListReference>()) {
1691 variantMetaType,
value.data(), doAppend)) {
1696 if (converted.
convert(elementMetaType)) {
1706 auto valueAsQObject = qvariant_cast<QObject *>(
value);
1708 if (
void *iface = valueAsQObject
1714 return property.writeProperty(
object, &iface,
flags);
1719 return property.writeProperty(
object,
const_cast<void *
>(
v.constData()),
flags);
1730 QQmlPropertyData::WriteFlags
flags)
1733 property.resetProperty(
object,
flags);
1822 void *
args[] = {
nullptr };
1934 prop.d->
engine = ctxt ? ctxt->engine() :
nullptr;
1950 for (
int ii =
methods - 1; ii >= 2; --ii) {
1959 if (
name.endsWith(
"Changed")) {
1961 int propIdx =
mo->indexOfProperty(propName.
constData());
1978 const int i =
mo->indexOfProperty(
name);
1996 if (indexInSignalRange)
2013 const QObject *receiver,
int method_index,
2016 static const bool indexInSignalRange =
false;
2029 static const bool indexInSignalRange =
true;
2035#include "moc_qqmlproperty.cpp"
static JNINativeMethod methods[]
const char * constData() const noexcept
Returns a pointer to the const data stored in the byte array.
QByteArray mid(qsizetype index, qsizetype len=-1) const
Returns a byte array containing len bytes from this byte array, starting at position pos.
QChar toLower() const noexcept
Returns the lowercase equivalent if the character is uppercase or titlecase; otherwise returns the ch...
constexpr bool isUpper() const noexcept
Returns true if the character is an uppercase letter, for example category() is Letter_Uppercase.
QChar toUpper() const noexcept
Returns the uppercase equivalent if the character is lowercase or titlecase; otherwise returns the ch...
T * data() const noexcept
Returns a pointer to the shared data object.
const void * constIterable() const
Container metaContainer() const
static QJSValue fromReturnedValue(QV4::ReturnedValue d)
The QJSValue class acts as a container for Qt/JavaScript data types.
qsizetype size() const noexcept
const_reference at(qsizetype i) const noexcept
T value(qsizetype i) const
void reserve(qsizetype size)
void append(parameter_type t)
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
QVariant property(const char *name) const
Returns the value of the object's name property.
static QPropertyBindingPrivate * get(const QUntypedPropertyBinding &binding)
QQmlPropertyIndex targetPropertyIndex() const
QQmlAbstractBinding * nextBinding() const
QObject * targetObject() const
virtual void setEnabled(bool e, QQmlPropertyData::WriteFlags f=QQmlPropertyData::DontRemoveBinding)=0
void addToObject()
Add this binding to object.
virtual Kind kind() const =0
void takeExpression(QQmlBoundSignalExpression *)
Sets the signal expression to e.
QQmlBoundSignalExpression * expression() const
Returns the signal expression.
QObject * idValue(int index) const
QQmlRefPointer< QQmlTypeNameCache > imports() const
static QQmlRefPointer< QQmlContextData > get(QQmlContext *context)
QUrl resolvedUrl(const QUrl &) const
QQmlRefPointer< QQmlContextData > parent() const
QQmlEngine * engine() const
The QQmlContext class defines a context within a QML engine.
QQmlEngine * engine() const
Return the context's QQmlEngine, or \nullptr if the context has no QQmlEngine or the QQmlEngine was d...
QQmlPropertyCache::ConstPtr propertyCache
static QQmlData * get(QObjectPrivate *priv, bool create)
static QQmlEnginePrivate * get(QQmlEngine *e)
QV4::ExecutionEngine * v4engine() const
The QQmlEngine class provides an environment for instantiating QML components.
QQmlContext * rootContext() const
Returns the engine's root context.
static QQmlGadgetPtrWrapper * instance(QQmlEngine *engine, QMetaType type)
QQmlEngine * engine() const
The QQmlListProperty class allows applications to expose list-like properties of QObject-derived clas...
static QQmlListReference init(const QQmlListProperty< QObject > &, QMetaType)
The QQmlListReference class allows the manipulation of QQmlListProperty properties.
qsizetype count() const
Returns the number of objects in the list, or 0 if the operation failed.
QObject * at(qsizetype) const
Returns the list element at index, or 0 if the operation failed.
const QQmlPropertyData * property(const K &key, QObject *object, const QQmlRefPointer< QQmlContextData > &context) const
void readProperty(QObject *target, void *property) const
bool isResettable() const
void readPropertyWithArgs(QObject *target, void *args[]) const
QMetaType propType() const
void setCoreIndex(int idx)
void setPropType(QMetaType pt)
static Flags flagsForProperty(const QMetaProperty &)
void load(const QMetaProperty &)
QString name(QObject *) const
bool hasValueTypeIndex() const
static QQmlBoundSignalExpression * signalExpression(const QQmlProperty &that)
Returns the expression associated with this signal property, or 0 if no signal expression exists.
static void takeSignalExpression(const QQmlProperty &that, QQmlBoundSignalExpression *)
Set the signal expression associated with this signal property to expr.
static bool resolveUrlsOnAssignment()
QMetaType propertyType() const
static void setBinding(QQmlAbstractBinding *binding, BindingFlags flags=None, QQmlPropertyData::WriteFlags writeFlags=QQmlPropertyData::DontRemoveBinding)
static void findAliasTarget(QObject *, QQmlPropertyIndex, QObject **, QQmlPropertyIndex *)
static QQmlMetaObject rawMetaObjectForType(QMetaType metaType)
static QQmlProperty restore(QObject *, const QQmlPropertyData &, const QQmlPropertyData *, const QQmlRefPointer< QQmlContextData > &)
QQmlProperty::PropertyTypeCategory propertyTypeCategory() const
static QQmlProperty create(QObject *target, const QString &propertyName, const QQmlRefPointer< QQmlContextData > &context, QQmlPropertyPrivate::InitFlags flags)
static bool writeEnumProperty(const QMetaProperty &prop, int idx, QObject *object, const QVariant &value, int flags)
QQmlPropertyIndex encodedIndex() const
static void removeBinding(const QQmlProperty &that)
static bool write(QObject *, const QQmlPropertyData &, const QVariant &, const QQmlRefPointer< QQmlContextData > &, QQmlPropertyData::WriteFlags flags={})
static QQmlPropertyIndex propertyIndex(const QQmlProperty &that)
static bool reset(QObject *, const QQmlPropertyData &, QQmlPropertyData::WriteFlags flags={})
static QMetaProperty findPropertyByName(const QMetaObject *mo, const QByteArray &)
Return the property corresponding to name.
static bool connect(const QObject *sender, int signal_index, const QObject *receiver, int method_index, int type=0, int *types=nullptr)
Connect sender signal_index to receiver method_index with the specified type and types.
QQmlProperty::Type type() const
QVariant readValueProperty()
static void setSignalExpression(const QQmlProperty &that, QQmlBoundSignalExpression *)
Set the signal expression associated with this signal property to expr.
QQmlPropertyData valueTypeData
static QQmlPropertyPrivate * get(const QQmlProperty &p)
static QMetaMethod findSignalByName(const QMetaObject *mo, const QByteArray &)
Return the signal corresponding to name.
void initDefault(QObject *obj)
Initialize from the default property of obj.
static void flushSignal(const QObject *sender, int signal_index)
QQmlRefPointer< QQmlContextData > effectiveContext() const
static QQmlAbstractBinding * binding(QObject *, QQmlPropertyIndex index)
static QList< QUrl > urlSequence(const QVariant &value)
bool writeValueProperty(const QVariant &, QQmlPropertyData::WriteFlags)
void initProperty(QObject *obj, const QString &name, InitFlags flags=InitFlag::None)
QQmlRefPointer< QQmlContextData > context
static bool resetValueProperty(QObject *, const QQmlPropertyData &, const QQmlPropertyData &valueTypeData, const QQmlRefPointer< QQmlContextData > &, QQmlPropertyData::WriteFlags flags={})
QPointer< QQmlEngine > engine
QPointer< QObject > object
The QQmlProperty class abstracts accessing properties on objects created from QML.
bool isDesignable() const
Returns true if the property is designable, otherwise false.
QMetaType propertyMetaType() const
Returns the metatype of the property.
bool isValid() const
Returns true if the QQmlProperty refers to a valid property, otherwise false.
QMetaMethod method() const
Return the QMetaMethod for this property if it is a SignalProperty, otherwise returns an invalid QMet...
bool hasNotifySignal() const
Returns true if the property has a change notifier signal, otherwise false.
const char * propertyTypeName() const
Returns the type name of the property, or 0 if the property has no type name.
PropertyTypeCategory propertyTypeCategory() const
Returns the property category.
int index() const
Return the Qt metaobject index of the property.
QQmlProperty & operator=(const QQmlProperty &)
Assign other to this QQmlProperty.
QVariant read() const
Returns the property value.
bool operator==(const QQmlProperty &) const
Returns true if other and this QQmlProperty represent the same property.
QQmlProperty()
Create an invalid QQmlProperty.
bool isProperty() const
Returns true if this QQmlProperty represents a regular Qt property.
Type
This enum specifies a type of QML property.
Type type() const
Returns the type of the property.
QMetaProperty property() const
Returns the \l{QMetaProperty} {Qt property} associated with this QML property.
PropertyTypeCategory
This enum specifies a category of QML property.
QML_ANONYMOUSQObject * object
bool write(const QVariant &) const
Sets the property value to value.
bool needsNotifySignal() const
Returns true if the property needs a change notifier signal for bindings to remain upto date,...
bool isSignalProperty() const
Returns true if this QQmlProperty represents a QML signal property.
bool isWritable() const
Returns true if the property is writable, otherwise false.
bool connectNotifySignal(QObject *dest, const char *slot) const
Connects the property's change notifier signal to the specified slot of the dest object and returns t...
bool isResettable() const
Returns true if the property is resettable, otherwise false.
int propertyType() const
Returns the metatype id of the property, or QMetaType::UnknownType if the property has no metatype.
bool reset() const
Resets the property and returns true if the property is resettable.
void activateSignal() const
static QVariant createValueType(const QJSValue &, QMetaType)
The QSequentialIterable class is an iterable interface for a container in a QVariant.
QMetaType valueMetaType() const
constexpr bool isEmpty() const noexcept
Returns whether this string view is empty - that is, whether {size() == 0}.
constexpr QStringView first(qsizetype n) const noexcept
QByteArray toUtf8() const
Returns a UTF-8 representation of the string view as a QByteArray.
Q_CORE_EXPORT QList< QStringView > split(QStringView sep, Qt::SplitBehavior behavior=Qt::KeepEmptyParts, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Splits the view into substring views wherever sep occurs, and returns the list of those string views.
QString toString() const
Returns a deep copy of this string view's data as a QString.
constexpr QStringView last(qsizetype n) const noexcept
constexpr QChar at(qsizetype n) const noexcept
Returns the character at position n in this string view.
\macro QT_RESTRICTED_CAST_FROM_ASCII
qsizetype size() const
Returns the number of characters in this string.
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
QString mid(qsizetype position, qsizetype n=-1) const
Returns a string that contains n characters of this string, starting at the specified position index.
const QChar at(qsizetype i) const
Returns the character at the given index position in the string.
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
QByteArray toUtf8() const &
QUntypedPropertyBinding binding() const
Returns the underlying property's binding if there is any, or a default constructed QUntypedPropertyB...
bool isNull() const
Returns true if the QUntypedPropertyBinding is null.
bool isRelative() const
Returns true if the URL is relative; otherwise returns false.
bool isEmpty() const
Returns true if the URL has no data; otherwise returns false.
void * data()
Returns a pointer to the contained object as a generic void* that can be written to.
bool convert(QMetaType type)
Casts the variant to the requested type, targetType.
bool isValid() const
Returns true if the storage type of this variant is not QMetaType::UnknownType; otherwise returns fal...
const char * typeName() const
Returns the name of the type stored in the variant.
static auto fromValue(T &&value) noexcept(std::is_nothrow_copy_constructible_v< T > &&Private::CanUseInternalSpace< T >) -> std::enable_if_t< std::conjunction_v< std::is_copy_constructible< T >, std::is_destructible< T > >, QVariant >
const void * constData() const
static void writeFlags(QTextStream &stream, const Provider &provider)
QSet< QString >::iterator it
Q_QML_PRIVATE_EXPORT QVariant variantFromString(const QString &, QMetaType preferredType, bool *ok=nullptr)
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char * method
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
bool qFuzzyIsNull(qfloat16 f) noexcept
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * v
[13]
GLsizei GLenum GLenum * types
GLenum GLuint GLenum GLsizei length
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLsizei const GLchar *const * path
QObject * qmlAttachedPropertiesObject(QObject *object, QQmlAttachedPropertiesFunc func, bool create)
#define DEFINE_BOOL_CONFIG_OPTION(name, var)
QQmlPrivate::QQmlAttachedPropertiesFunc< QObject > QQmlAttachedPropertiesFunc
bool changeThroughGadgetPtrWrapper(QObject *object, const QQmlPropertyData &core, const QQmlRefPointer< QQmlContextData > &context, QQmlPropertyData::WriteFlags flags, int internalIndex, Op op)
static ConvertAndAssignResult tryConvertAndAssign(QObject *object, const QQmlPropertyData &property, const QVariant &value, QQmlPropertyData::WriteFlags flags, QMetaType propertyMetaType, QMetaType variantMetaType, bool isUrl)
static void removeOldBinding(QObject *object, QQmlPropertyIndex index, QQmlPropertyPrivate::BindingFlags flags=QQmlPropertyPrivate::None)
static void flush_vme_signal(const QObject *object, int index, bool indexInSignalRange)
static void removeValuePropertyBinding(QObject *object, const QQmlPropertyData &core, const QQmlPropertyData &valueTypeData, QQmlPropertyData::WriteFlags flags)
bool changePropertyAndWriteBack(QObject *object, int coreIndex, QQmlGadgetPtrWrapper *wrapper, QQmlPropertyData::WriteFlags flags, int internalIndex, Op op)
bool iterateQObjectContainer(QMetaType metaType, const void *data, Op op)
#define QStringLiteral(str)
obj metaObject() -> className()
Q_DISABLE_COPY_MOVE(BindingFixer)
BindingFixer(QObject *object, const QQmlPropertyData &property, QQmlPropertyData::WriteFlags flags)
\inmodule QtCore \reentrant
QQmlPropertyIndex targetIndex
QV4::ReturnedValue metaTypeToJS(QMetaType type, const void *data)
static void setProperty(ExecutionEngine *engine, QObject *object, int propertyIndex, const Value &value)
static bool isSignalPropertyName(const QString &name)