QVariant ObjectNodeInstance::convertEnumToValue(const QVariant &value, const PropertyName &name) { Q_ASSERT(value.canConvert<Enumeration>()); int propertyIndex = object()->metaObject()->indexOfProperty(name); QMetaProperty metaProperty = object()->metaObject()->property(propertyIndex); QVariant adjustedValue; Enumeration enumeration = value.value<Enumeration>(); if (metaProperty.isValid() && metaProperty.isEnumType()) { adjustedValue = metaProperty.enumerator().keyToValue(enumeration.name()); } else { QQmlExpression expression(context(), object(), enumeration.toString()); adjustedValue = expression.evaluate(); if (expression.hasError()) qDebug() << "Enumeration can not be evaluated:" << object() << name << enumeration; } return adjustedValue; }