6#include <private/qjsvalue_p.h>
7#include <private/qmetaobject_p.h>
8#include <private/qproperty_p.h>
9#include <private/qqmlboundsignal_p.h>
10#include <private/qqmlbuiltinfunctions_p.h>
11#include <private/qqmldata_p.h>
12#include <private/qqmlengine_p.h>
13#include <private/qqmlirbuilder_p.h>
14#include <private/qqmllist_p.h>
15#include <private/qqmlproperty_p.h>
16#include <private/qqmlsignalnames_p.h>
17#include <private/qqmlstringconverters_p.h>
18#include <private/qqmlvaluetypeproxybinding_p.h>
19#include <private/qqmlvaluetypewrapper_p.h>
20#include <private/qqmlvmemetaobject_p.h>
21#include <private/qv4functionobject_p.h>
22#include <private/qv4qobjectwrapper_p.h>
24#include <QtQml/qqmlcontext.h>
25#include <QtQml/qqmlengine.h>
26#include <QtQml/qqmlpropertymap.h>
28#include <QtCore/qdebug.h>
29#include <QtCore/qsequentialiterable.h>
30#include <QtCore/qstringlist.h>
31#include <QtCore/qvector.h>
197 const QQmlRefPointer<QQmlContextData> &
context,
198 QQmlPropertyPrivate::InitFlags
flags)
216 return ::compatResolveUrlsOnAssigment();
231 QQmlPropertyPrivate::InitFlags
flags)
236 QList<QStringView>
path;
241 if (
path.isEmpty())
return;
244 for (
int ii = 0; ii <
path.size() - 1; ++ii) {
249 if (typeNameCache && !pathName.isEmpty() && pathName.at(0).isUpper()) {
254 if (
r.type.isValid()) {
259 if (!currentObject)
return;
260 }
else if (
r.importNamespace) {
261 if (++ii ==
path.size())
266 path.at(ii),
r.importNamespace, typeLoader);
268 if (!
r.type.isValid())
279 }
else if (
r.scriptIndex != -1) {
300 for (
auto idContext =
context; idContext; idContext = idContext->
parent()) {
301 const int objectId = idContext->propertyIndex(pathName.toString());
302 if (objectId != -1 && objectId < idContext->numIdValues()) {
312 }
else if (
property->isFunction()) {
319 if (!valueTypeMetaObject)
return;
321 int idx = valueTypeMetaObject->indexOfProperty(
path.last().toUtf8().constData());
322 if (idx == -1)
return;
328 object = currentObject;
337 if (
auto asPropertyMap = qobject_cast<QQmlPropertyMap*>(currentObject))
338 currentObject = asPropertyMap->value(
path.at(ii).toString()).value<
QObject*>();
342 property->readProperty(currentObject, ¤tObject);
345 if (!currentObject)
return;
351 terminal =
path.last();
352 }
else if (!currentObject) {
356 auto findSignalInMetaObject = [&](
const QByteArray &signalName) {
361 object = currentObject;
367 auto findChangeSignal = [&](
QStringView signalName) {
370 ddata->propertyCache->property(*propName, currentObject,
context);
371 while (
d &&
d->isFunction())
372 d = ddata->propertyCache->overrideData(
d);
374 if (
d &&
d->notifyIndex() != -1) {
375 object = currentObject;
376 core = *ddata->propertyCache->signal(
d->notifyIndex());
383 const auto findSignal = [&](
const QString &signalName) {
384 if (ddata && ddata->propertyCache) {
387 = ddata->propertyCache->property(signalName, currentObject,
context);
392 while (
d && !
d->isFunction())
393 d = ddata->propertyCache->overrideData(
d);
396 object = currentObject;
401 return findChangeSignal(signalName);
404 return findSignalInMetaObject(signalName.toUtf8());
409 if (findSignal(*signalName))
414 if (findSignal(*signalName)) {
417 <<
"is not a properly capitalized signal handler name."
419 <<
"would be correct.";
425 if (ddata && ddata->propertyCache) {
427 terminal, currentObject,
context);
432 object = currentObject;
437 property = ddata->propertyCache->overrideData(
property);
445 object = currentObject;
451 findChangeSignal(terminal);
454 const QByteArray propertyName = terminal.toUtf8();
458 object = currentObject;
464 findSignalInMetaObject(terminal.toUtf8());
654 return d ? d->
object :
nullptr;
799 if (!that.d || !that.isProperty() || !that.d->object)
802 QQmlPropertyIndex thatIndex(that.d->core.coreIndex(), that.d->valueTypeData.coreIndex());
803 return binding(that.d->object, thatIndex);
824 if (!that.d || !that.isProperty() || !that.d->object) {
825 if (!newBinding->
ref)
834 int coreIndex =
index.coreIndex();
835 int valueTypeIndex =
index.valueTypeIndex();
839 if (!
data || !
data->hasBindingBit(coreIndex))
843 oldBinding =
data->bindings;
845 while (oldBinding && (oldBinding->targetPropertyIndex().coreIndex() != coreIndex ||
846 oldBinding->targetPropertyIndex().hasValueTypeIndex()))
860 oldBinding->removeFromObject();
878 if (!that.d || !that.isProperty() || !that.d->object)
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))
902 while (
binding && (
binding->targetPropertyIndex().coreIndex() != coreIndex ||
903 binding->targetPropertyIndex().hasValueTypeIndex()))
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);
968 int coreIndex =
index.coreIndex();
970 if (
data->propertyCache) {
1003 signalHandler = signalHandler->m_nextSignal;
1035 if (!that.d->object)
1044 signalHandler = signalHandler->m_nextSignal;
1046 if (signalHandler) {
1055 signal->takeExpression(expr);
1073 }
else if (
type() & Property) {
1144 QQmlListProperty<QObject> prop;
1157 return object->metaObject()->property(
core.
coreIndex()).read(
object);
1161 void *
args[] = {
nullptr, &
value, &status };
1162 if (
core.
propType() == QMetaType::fromType<QVariant>()) {
1180 return value.value<QList<QUrl> >();
1183 if (
value.metaType() == QMetaType::fromType<QUrl>()) {
1184 urls.append(
value.toUrl());
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();
1192 urls.reserve(urlStringsSize);
1193 for (
int i = 0;
i < urlStringsSize; ++
i)
1194 urls.append(
QUrl(urlStrings.at(
i)));
1201 const QVariant &
value,
const QQmlRefPointer<QQmlContextData> &ctxt)
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>
1274 const QQmlRefPointer<QQmlContextData> &
context, QQmlPropertyData::WriteFlags
flags,
1275 int internalIndex, Op op)
1296 QQmlPropertyData::WriteFlags
flags)
1306 return write(wrapper, valueTypeData, value, context, flags);
1312 const QQmlRefPointer<QQmlContextData> &
context, QQmlPropertyData::WriteFlags
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>
1451 const QMetaSequence metaSequence = iterable.metaContainer();
1459 const void *container = iterable.constIterable();
1461 const void *
end = metaSequence.
constEnd(container);
1475 const QQmlRefPointer<QQmlContextData> &
context, QQmlPropertyData::WriteFlags
flags)
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())
1564 QQmlListProperty<QObject> prop;
1565 property.readProperty(
object, &prop);
1567 if (!prop.clear || !prop.append)
1580 const auto doAppend = [&](
QObject *
o) {
1583 propAppend(&prop,
o);
1586 if (variantMetaType == QMetaType::fromType<QQmlListReference>()) {
1588 for (
qsizetype ii = 0; ii < qdlr.count(); ++ii)
1589 doAppend(qdlr.at(ii));
1591 const QList<QObject *> &
list = qvariant_cast<QList<QObject *> >(
value);
1595 const QList<QVariant> &
list
1596 = *
static_cast<const QList<QVariant> *
>(
value.constData());
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>(),
1647 const QMetaSequence propertyMetaSequence = iterable.metaContainer();
1648 if (propertyMetaSequence.canAddValueAtEnd()) {
1649 const QMetaType elementMetaType = iterable.valueMetaType();
1650 void *propertyContainer = iterable.mutableIterable();
1652 if (variantMetaType == elementMetaType) {
1653 propertyMetaSequence.addValueAtEnd(propertyContainer,
value.constData());
1655 }
else if (variantMetaType == QMetaType::fromType<QVariantList>()) {
1658 if (valueElement.metaType() == elementMetaType) {
1659 propertyMetaSequence.addValueAtEnd(
1660 propertyContainer, valueElement.constData());
1662 QVariant converted(elementMetaType);
1664 valueElement.metaType(), valueElement.constData(),
1665 elementMetaType, converted.
data());
1666 propertyMetaSequence.addValueAtEnd(
1667 propertyContainer, converted.
constData());
1672 const QMetaObject *elementMetaObject = elementMetaType.metaObject();
1675 const auto doAppend = [&](
QObject *
o) {
1676 QObject *casted = elementMetaObject->cast(
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)) {
1697 propertyMetaSequence.addValueAtEnd(propertyContainer, converted.
constData());
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 };
1836 that.d->core.isValid() && that.isWritable())
1837 return that.d->writeValueProperty(
value,
flags);
1927 const QQmlRefPointer<QQmlContextData> &ctxt)
1934 prop.d->
engine = ctxt ? ctxt->engine() :
nullptr;
1950 for (
int ii =
methods - 1; ii >= 2; --ii) {
1960 int propIdx =
mo->indexOfProperty(propName->constData());
1977 const int i =
mo->indexOfProperty(
name);
1995 if (indexInSignalRange)
1999 vme->connectAliasSignal(
index, indexInSignalRange);
2012 const QObject *receiver,
int method_index,
2015 static const bool indexInSignalRange =
false;
2028 static const bool indexInSignalRange =
true;
2034#include "moc_qqmlproperty.cpp"
static JNINativeMethod methods[]
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
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)
QQmlAbstractBinding * nextBinding() const
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...
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
static QQmlListReference init(const QQmlListProperty< QObject > &, QMetaType)
The QQmlListReference class allows the manipulation of QQmlListProperty properties.
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
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.
static std::optional< QString > changedSignalNameToPropertyName(QStringView changeSignal)
static QString signalNameToHandlerName(QAnyStringView signal)
static std::optional< QString > badHandlerNameToSignalName(QStringView handler)
static std::optional< QString > handlerNameToSignalName(QStringView handler)
The QQmlTypeLoader class abstracts loading files and their dependencies over the network.
static QQmlTypeLoader * get(Engine *engine)
void activateSignal() const
static QVariant createValueType(const QJSValue &, QMetaType)
void setEnabled(bool, QQmlPropertyData::WriteFlags) override
The QSequentialIterable class is an iterable interface for a container in a QVariant.
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.
constexpr QChar at(qsizetype n) const noexcept
Returns the character at position n in this string view.
\macro QT_RESTRICTED_CAST_FROM_ASCII
bool isEmpty() const noexcept
Returns true if the string has no characters; otherwise returns false.
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
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_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
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)
QT_BEGIN_NAMESPACE constexpr void qSwap(T &value1, T &value2) noexcept(std::is_nothrow_swappable_v< T >)
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)