diff options
Diffstat (limited to 'src/qml/qml/qqmlproperty.cpp')
-rw-r--r-- | src/qml/qml/qqmlproperty.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/qml/qml/qqmlproperty.cpp b/src/qml/qml/qqmlproperty.cpp index 0bbcafda54..1075b53c5e 100644 --- a/src/qml/qml/qqmlproperty.cpp +++ b/src/qml/qml/qqmlproperty.cpp @@ -1403,6 +1403,12 @@ bool QQmlPropertyPrivate::write(QObject *object, v = value; if (v.convert(propertyType)) { ok = true; + } else if (v.isValid() && value.isNull()) { + // For historical reasons converting a null QVariant to another type will do the trick + // but return false anyway. This is caught with the above condition and considered a + // successful conversion. + Q_ASSERT(v.userType() == propertyType); + ok = true; } else if ((uint)propertyType >= QVariant::UserType && variantType == QVariant::String) { QQmlMetaType::StringConverter con = QQmlMetaType::customStringConverter(propertyType); if (con) { |