summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmetaobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel/qmetaobject.cpp')
-rw-r--r--src/corelib/kernel/qmetaobject.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index e2e3c9b8083..48197c9d5c7 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -3788,8 +3788,10 @@ bool QMetaProperty::write(QObject *object, QVariant &&v) const
return false;
QMetaType t(mobj->d.metaTypes[data.index(mobj)]);
if (t != QMetaType::fromType<QVariant>() && t != v.metaType()) {
- if (isEnumType() && !t.metaObject() && v.metaType().id() == QMetaType::QString) {
+ if (isEnumType() && !t.metaObject() && v.metaType() == QMetaType::fromType<QString>()) {
// Assigning a string to a property of type Q_ENUMS (instead of Q_ENUM)
+ // means the QMetaType has no associated QMetaObject, so it can't
+ // do the conversion (see qmetatype.cpp:convertToEnum()).
bool ok;
if (isFlagType())
v = QVariant(menum.keysToValue(v.toByteArray(), &ok));
@@ -3797,7 +3799,8 @@ bool QMetaProperty::write(QObject *object, QVariant &&v) const
v = QVariant(menum.keyToValue(v.toByteArray(), &ok));
if (!ok)
return false;
- } else if (!v.isValid()) {
+ }
+ if (!v.isValid()) {
if (isResettable())
return reset(object);
v = QVariant(t, nullptr);