diff options
author | Dominik Holland <dominik.holland@qt.io> | 2020-11-16 16:29:06 +0100 |
---|---|---|
committer | Dominik Holland <dominik.holland@qt.io> | 2020-12-02 10:46:54 +0100 |
commit | e1e92987e999bc8fd463f05d6945c2ae25ffc026 (patch) | |
tree | 8744069e23b58472b2ab94b07ebe25ed4a2ee595 /src | |
parent | 21b7efb998d875e52a36a7282af6b06f9eed942d (diff) | |
download | qtivi-e1e92987e999bc8fd463f05d6945c2ae25ffc026.tar.gz |
Qt6 port without cmake support
All deprecation warnings fixed and all autotest pass.
Change-Id: I05d48e9ddd2bf23b900065726d67710eea0e82d0
Reviewed-by: Robert Griebl <robert.griebl@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/helper/remoteobjects/qiviremoteobjectreplicahelper.cpp | 1 | ||||
-rw-r--r-- | src/helper/remoteobjects/qiviremoteobjectsourcehelper.h | 1 | ||||
-rw-r--r-- | src/ivicore/qividefaultpropertyoverrider.cpp | 12 | ||||
-rw-r--r-- | src/ivicore/qivipendingreply.cpp | 15 | ||||
-rw-r--r-- | src/ivicore/qivipendingreply.h | 8 | ||||
-rw-r--r-- | src/ivicore/qiviqmlconversion_helper.cpp | 32 | ||||
-rw-r--r-- | src/ivicore/qiviqmlconversion_helper.h | 2 | ||||
-rw-r--r-- | src/ivicore/qivisimulationengine.cpp | 6 | ||||
-rw-r--r-- | src/ivicore/qivisimulationglobalobject.cpp | 8 | ||||
-rw-r--r-- | src/ivicore/queryparser/qiviqueryterm.cpp | 2 | ||||
-rw-r--r-- | src/plugins/ivimedia/media_qtro/mediaplayerbackend.cpp | 1 | ||||
-rw-r--r-- | src/plugins/ivimedia/media_qtro/searchandbrowsemodel.cpp | 2 | ||||
-rw-r--r-- | src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp | 1 | ||||
-rw-r--r-- | src/plugins/ivimedia/media_simulator/searchandbrowsebackend.cpp | 2 | ||||
-rw-r--r-- | src/tools/ivigenerator/templates/frontend/module.cpp.tpl | 3 | ||||
-rw-r--r-- | src/tools/ivigenerator/templates/frontend/struct.cpp.tpl | 12 |
16 files changed, 50 insertions, 58 deletions
diff --git a/src/helper/remoteobjects/qiviremoteobjectreplicahelper.cpp b/src/helper/remoteobjects/qiviremoteobjectreplicahelper.cpp index ce12202..c0f446b 100644 --- a/src/helper/remoteobjects/qiviremoteobjectreplicahelper.cpp +++ b/src/helper/remoteobjects/qiviremoteobjectreplicahelper.cpp @@ -48,7 +48,6 @@ QIviRemoteObjectReplicaHelper::QIviRemoteObjectReplicaHelper(const QLoggingCateg , m_category(category) { qRegisterMetaType<QIviRemoteObjectPendingResult>(); - qRegisterMetaTypeStreamOperators<QIviRemoteObjectPendingResult>(); } QVariant QIviRemoteObjectReplicaHelper::fromRemoteObjectVariant(const QVariant &variant) const diff --git a/src/helper/remoteobjects/qiviremoteobjectsourcehelper.h b/src/helper/remoteobjects/qiviremoteobjectsourcehelper.h index b290426..b60c9ac 100644 --- a/src/helper/remoteobjects/qiviremoteobjectsourcehelper.h +++ b/src/helper/remoteobjects/qiviremoteobjectsourcehelper.h @@ -58,7 +58,6 @@ public: , m_category(category) { qRegisterMetaType<QIviRemoteObjectPendingResult>(); - qRegisterMetaTypeStreamOperators<QIviRemoteObjectPendingResult>(); } QVariant toRemoteObjectVariant(const QVariant &variant) const diff --git a/src/ivicore/qividefaultpropertyoverrider.cpp b/src/ivicore/qividefaultpropertyoverrider.cpp index 328cdff..2072050 100644 --- a/src/ivicore/qividefaultpropertyoverrider.cpp +++ b/src/ivicore/qividefaultpropertyoverrider.cpp @@ -127,7 +127,7 @@ QString QIviDefaultPropertyOverrider::PropertyOverride::name() const QString QIviDefaultPropertyOverrider::PropertyOverride::typeName() const { const int userType(m_metaProperty.userType()); - return QString::fromLatin1(QMetaType::typeName(userType)); + return QString::fromLatin1(QMetaType(userType).name()); } QString QIviDefaultPropertyOverrider::PropertyOverride::displayText() const @@ -184,11 +184,11 @@ bool QIviDefaultPropertyOverrider::PropertyOverride::notifyOverridenValue(const if (!notifySignal.isValid() || notifySignal.parameterCount() != 1) return false; - switch (value.type()) { - case QVariant::Int: return notifySignal.invoke(carrier, Q_ARG(int, value.value<int>())); - case QVariant::String: return notifySignal.invoke(carrier, Q_ARG(QString, value.value<QString>())); - case QVariant::Double: return notifySignal.invoke(carrier, Q_ARG(double, value.value<double>())); - case QVariant::Bool: return notifySignal.invoke(carrier, Q_ARG(double, value.value<bool>())); + switch (value.metaType().id()) { + case QMetaType::Int: return notifySignal.invoke(carrier, Q_ARG(int, value.value<int>())); + case QMetaType::QString: return notifySignal.invoke(carrier, Q_ARG(QString, value.value<QString>())); + case QMetaType::Double: return notifySignal.invoke(carrier, Q_ARG(double, value.value<double>())); + case QMetaType::Bool: return notifySignal.invoke(carrier, Q_ARG(double, value.value<bool>())); default: return false; } diff --git a/src/ivicore/qivipendingreply.cpp b/src/ivicore/qivipendingreply.cpp index b0c6edd..ff55666 100644 --- a/src/ivicore/qivipendingreply.cpp +++ b/src/ivicore/qivipendingreply.cpp @@ -485,17 +485,18 @@ void QIviPendingReplyWatcher::setSuccess(const QVariant &value) QVariant var = value; + //We need a special conversion for enums from QML as they are saved as int + QMetaType metaType(d->m_type); + bool isEnumOrFlag = false; + //Try to convert the value, if successfully, use the converted value QVariant temp(var); - if (temp.convert(d->m_type)) + if (temp.convert(metaType)) var = temp; - //We need a special conversion for enums from QML as they are saved as int - QMetaType metaType(d->m_type); - bool isEnumOrFlag = false; const QMetaObject *mo = metaType.metaObject(); - const QString enumName = QString::fromLocal8Bit(QMetaType::typeName(d->m_type)).split(QStringLiteral("::")).last(); + const QString enumName = QString::fromLocal8Bit(metaType.name()).split(QStringLiteral("::")).last(); if (mo) { QMetaEnum mEnum = mo->enumerator(mo->indexOfEnumerator(enumName.toLocal8Bit().constData())); if (mEnum.isValid()) { @@ -508,8 +509,8 @@ void QIviPendingReplyWatcher::setSuccess(const QVariant &value) } //Check that the type names match only if it's not a enum, as it will be converted automatically in this case. - if (!isEnumOrFlag && var.typeName() != QVariant::typeToName(d->m_type)) { - qtivi_qmlOrCppWarning(this, QString(QStringLiteral("Expected: %1 but got %2")).arg(QLatin1String(QVariant::typeToName(d->m_type)), QLatin1String(QVariant::typeToName(value.userType())))); + if (!isEnumOrFlag && var.metaType() != metaType) { + qtivi_qmlOrCppWarning(this, QString(QStringLiteral("Expected: %1 but got %2")).arg(QLatin1String(metaType.name()), QLatin1String(var.metaType().name()))); return; } diff --git a/src/ivicore/qivipendingreply.h b/src/ivicore/qivipendingreply.h index e9bfc3d..7b2cb4d 100644 --- a/src/ivicore/qivipendingreply.h +++ b/src/ivicore/qivipendingreply.h @@ -269,7 +269,7 @@ public: //Workaround for QTBUG-83664 //If T is a enum -template <typename T> Q_INLINE_TEMPLATE typename QtPrivate::QEnableIf<QtPrivate::IsQEnumHelper<T>::Value, void>::Type qIviRegisterPendingReplyType(const char *name = nullptr) +template <typename T> Q_INLINE_TEMPLATE typename std::enable_if<QtPrivate::IsQEnumHelper<T>::Value, void>::type qIviRegisterPendingReplyType(const char *name = nullptr) { qRegisterMetaType<T>(); QString n; @@ -280,7 +280,7 @@ template <typename T> Q_INLINE_TEMPLATE typename QtPrivate::QEnableIf<QtPrivate: if (me.isValid() && me.isFlag()) n = QLatin1String(me.scope()) + QStringLiteral("::") + QLatin1String(me.name()); else - n = QLatin1String(QMetaType::typeName(qMetaTypeId<T>())); + n = QLatin1String(QMetaType(qMetaTypeId<T>()).name()); } const QString t_name = QStringLiteral("QIviPendingReply<") + n + QStringLiteral(">"); @@ -288,10 +288,10 @@ template <typename T> Q_INLINE_TEMPLATE typename QtPrivate::QEnableIf<QtPrivate: } //If T is NOT a enum -template <typename T> Q_INLINE_TEMPLATE typename QtPrivate::QEnableIf<!QtPrivate::IsQEnumHelper<T>::Value, void>::Type qIviRegisterPendingReplyType(const char *name = nullptr) +template <typename T> Q_INLINE_TEMPLATE typename std::enable_if<!QtPrivate::IsQEnumHelper<T>::Value, void>::type qIviRegisterPendingReplyType(const char *name = nullptr) { qRegisterMetaType<T>(); - const char* n = name ? name : QMetaType::typeName(qMetaTypeId<T>()); + const char* n = name ? name : QMetaType(qMetaTypeId<T>()).name(); const QString t_name = QStringLiteral("QIviPendingReply<") + QLatin1String(n) + QStringLiteral(">"); qRegisterMetaType<QIviPendingReplyBase>(qPrintable(t_name)); } diff --git a/src/ivicore/qiviqmlconversion_helper.cpp b/src/ivicore/qiviqmlconversion_helper.cpp index 2b13b7c..4ad719f 100644 --- a/src/ivicore/qiviqmlconversion_helper.cpp +++ b/src/ivicore/qiviqmlconversion_helper.cpp @@ -100,12 +100,12 @@ QVariant qtivi_convertFromJSON(const QVariant &value) QVariant val = value; // First try to convert the values to a Map or a List // This is needed as it could also store a QStringList or a Hash - if (val.canConvert(QVariant::Map)) - val.convert(QVariant::Map); - if (val.canConvert(QVariant::List)) - val.convert(QVariant::List); + if (val.canConvert(QMetaType::fromType<QVariantMap>())) + val.convert(QMetaType::fromType<QVariantMap>()); + if (val.canConvert(QMetaType::fromType<QVariantList>())) + val.convert(QMetaType::fromType<QVariantList>()); - if (val.type() == QVariant::Map) { + if (val.metaType() == QMetaType::fromType<QVariantMap>()) { const QVariantMap map = val.toMap(); if (map.contains(typeLiteral) && map.contains(valueLiteral)) { const QString type = map.value(typeLiteral).toString(); @@ -116,7 +116,8 @@ QVariant qtivi_convertFromJSON(const QVariant &value) const int lastIndex = enumValue.lastIndexOf(QStringLiteral("::")); const QString className = enumValue.left(lastIndex) + QStringLiteral("*"); enumValue = enumValue.right(enumValue.count() - lastIndex - 2); - const QMetaObject *mo = QMetaType::metaObjectForType(QMetaType::type(className.toLatin1())); + QMetaType metaType = QMetaType::fromName(className.toLatin1()); + const QMetaObject *mo = metaType.metaObject(); if (Q_UNLIKELY(!mo)) { qWarning() << "Couldn't retrieve MetaObject for enum parsing:" << map; qWarning("Please make sure %s is registered in Qt's meta-type system: qRegisterMetaType<%s>()", @@ -128,14 +129,15 @@ QVariant qtivi_convertFromJSON(const QVariant &value) QMetaEnum me = mo->enumerator(i); bool ok = false; int value = me.keysToValue(enumValue.toLatin1(), &ok); - if (ok) - return value; + if (ok) { + return QVariant(QMetaType::fromName((QLatin1String(me.scope()) + QStringLiteral("::") + QLatin1String(me.enumName())).toLatin1()), &value); + } } qWarning() << "Couldn't parse the enum definition" << map; return QVariant(); } else { - int typeId = QMetaType::type(type.toLatin1()); - const QMetaObject *mo = QMetaType::metaObjectForType(typeId); + QMetaType metaType = QMetaType::fromName(type.toLatin1()); + const QMetaObject *mo = metaType.metaObject(); if (Q_UNLIKELY(!mo)) { qWarning() << "Couldn't retrieve MetaObject for struct parsing:" << map; qWarning("Please make sure %s is registered in Qt's meta-type system: qRegisterMetaType<%s>()", @@ -143,9 +145,9 @@ QVariant qtivi_convertFromJSON(const QVariant &value) return QVariant(); } - void *gadget = QMetaType::create(typeId); + void *gadget = metaType.create(); if (!Q_UNLIKELY(gadget)) { - qWarning("Couldn't create a new instance of %s", QMetaType::typeName(typeId)); + qWarning("Couldn't create a new instance of %s", metaType.name()); return QVariant(); } @@ -159,12 +161,12 @@ QVariant qtivi_convertFromJSON(const QVariant &value) qWarning("Couldn't find method: %s::fromJSON(QVariant)\n" "If your are using code created by the ivigenerator, please regenerate" "your frontend code. See AUTOSUITE-1374 for why this is needed", - QMetaType::typeName(typeId)); + metaType.name()); return QVariant(); } mo->method(moIdx).invokeOnGadget(gadget, Q_ARG(QVariant, QVariant(value))); - return QVariant(typeId, gadget); + return QVariant(metaType, gadget); } } @@ -172,7 +174,7 @@ QVariant qtivi_convertFromJSON(const QVariant &value) for (auto i = map.constBegin(); i != map.constEnd(); ++i) convertedValues.insert(i.key(), qtivi_convertFromJSON(i.value())); return convertedValues; - } else if (val.type() == QVariant::List) { + } else if (val.metaType() == QMetaType::fromType<QVariantList>()) { QVariantList values = val.toList(); for (auto i = values.begin(); i != values.end(); ++i) *i = qtivi_convertFromJSON(*i); diff --git a/src/ivicore/qiviqmlconversion_helper.h b/src/ivicore/qiviqmlconversion_helper.h index 620fd8e..3f4313a 100644 --- a/src/ivicore/qiviqmlconversion_helper.h +++ b/src/ivicore/qiviqmlconversion_helper.h @@ -63,7 +63,7 @@ template <typename T> QVariant qtivi_convertValue(const T &val) int userType = qMetaTypeId<T>(); QMetaType metaType(userType); const QMetaObject *mo = metaType.metaObject(); - QString enumName = QString::fromLocal8Bit(QMetaType::typeName(userType)).split(QStringLiteral("::")).last(); + QString enumName = QString::fromLocal8Bit(metaType.name()).split(QStringLiteral("::")).last(); if (mo) { QMetaEnum mEnum = mo->enumerator(mo->indexOfEnumerator(enumName.toLocal8Bit().constData())); if (mEnum.isValid()) diff --git a/src/ivicore/qivisimulationengine.cpp b/src/ivicore/qivisimulationengine.cpp index 52cfb04..860c305 100644 --- a/src/ivicore/qivisimulationengine.cpp +++ b/src/ivicore/qivisimulationengine.cpp @@ -84,7 +84,7 @@ namespace qtivi_helper { void parseEnv(const QByteArray &rulesSrc, QHash<QString, QString> &hash) { const QString content = QString::fromLocal8Bit(rulesSrc); - const auto lines = content.splitRef(QLatin1Char(';')); + const auto lines = content.split(QLatin1Char(';')); for (auto line : lines) { // Remove whitespace at start and end of line: line = line.trimmed(); @@ -99,8 +99,8 @@ namespace qtivi_helper { if (fixedStr.startsWith(qrcUrlLiteral)) fixedStr = fixedStr.mid(3); - if (QFile::exists(fixedStr.toString())) - hash.insert(key.toString(), valueStr.toString()); + if (QFile::exists(fixedStr)) + hash.insert(key, valueStr); else qCWarning(qLcIviSimulationEngine, "Ignoring malformed override: File does not exist: '%s'", fixedStr.toUtf8().constData()); } else { diff --git a/src/ivicore/qivisimulationglobalobject.cpp b/src/ivicore/qivisimulationglobalobject.cpp index fe9f7b6..40b2fb1 100644 --- a/src/ivicore/qivisimulationglobalobject.cpp +++ b/src/ivicore/qivisimulationglobalobject.cpp @@ -429,9 +429,9 @@ bool QIviSimulationGlobalObject::checkSettings(const QVariantMap &data, const QV } } const QVariant domainDomain = parseDomainValue(data, domainLiteral, zone); - bool valueToDouble = value.canConvert(QVariant::Double); - bool minDomainToDouble = minDomain.canConvert(QVariant::Double); - bool maxDomainToDouble = maxDomain.canConvert(QVariant::Double); + bool valueToDouble = value.canConvert(QMetaType::fromType<double>()); + bool minDomainToDouble = minDomain.canConvert(QMetaType::fromType<double>()); + bool maxDomainToDouble = maxDomain.canConvert(QMetaType::fromType<double>()); if (unsupportedDomain.isValid()) { return !unsupportedDomain.toBool(); @@ -473,7 +473,7 @@ QVariant QIviSimulationGlobalObject::parseDomainValue(const QVariantMap &data, c return QVariant(); const QVariant domainData = data.value(domain); - if (domainData.type() == QVariant::Map) { + if (domainData.metaType().id() == QMetaType::QVariantMap) { const QVariantMap domainMap = domainData.toMap(); QString z = zone; if (zone.isEmpty()) diff --git a/src/ivicore/queryparser/qiviqueryterm.cpp b/src/ivicore/queryparser/qiviqueryterm.cpp index 867439d..556ad50 100644 --- a/src/ivicore/queryparser/qiviqueryterm.cpp +++ b/src/ivicore/queryparser/qiviqueryterm.cpp @@ -490,7 +490,7 @@ QDataStream &operator>>(QDataStream &in, QIviAbstractQueryTerm **var) Q_ASSERT(type == QStringLiteral("conjunction")); auto term = new QIviConjunctionTerm(); aTerm = term; - int count = 0; + qsizetype count = 0; in >> term->d_ptr->m_conjunction; in >> count; for (int i = 0; i < count; ++i) { diff --git a/src/plugins/ivimedia/media_qtro/mediaplayerbackend.cpp b/src/plugins/ivimedia/media_qtro/mediaplayerbackend.cpp index 48b185b..2140f05 100644 --- a/src/plugins/ivimedia/media_qtro/mediaplayerbackend.cpp +++ b/src/plugins/ivimedia/media_qtro/mediaplayerbackend.cpp @@ -54,7 +54,6 @@ MediaPlayerBackend::MediaPlayerBackend(QObject *parent) { qRegisterMetaType<QIviPlayableItem>(); qRegisterMetaType<QIviAudioTrackItem>(); - qRegisterMetaTypeStreamOperators<QIviAudioTrackItem>(); } void MediaPlayerBackend::initialize() diff --git a/src/plugins/ivimedia/media_qtro/searchandbrowsemodel.cpp b/src/plugins/ivimedia/media_qtro/searchandbrowsemodel.cpp index cc771e6..2d5db95 100644 --- a/src/plugins/ivimedia/media_qtro/searchandbrowsemodel.cpp +++ b/src/plugins/ivimedia/media_qtro/searchandbrowsemodel.cpp @@ -80,9 +80,7 @@ SearchAndBrowseModel::SearchAndBrowseModel(QObject *parent, const QString& remot , m_helper(new QIviRemoteObjectReplicaHelper(qLcROQIviSearchAndBrowseModel(), this)) { qRegisterMetaType<SearchAndBrowseItem>(); - qRegisterMetaTypeStreamOperators<SearchAndBrowseItem>(); qRegisterMetaType<QIviAudioTrackItem>(); - qRegisterMetaTypeStreamOperators<QIviAudioTrackItem>(); } void SearchAndBrowseModel::initialize() diff --git a/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp b/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp index e6e718b..a6aae5d 100644 --- a/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp +++ b/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp @@ -63,7 +63,6 @@ MediaPlayerBackend::MediaPlayerBackend(const QSqlDatabase &database, QObject *pa , m_player(new QMediaPlayer(this)) { qRegisterMetaType<QIviAudioTrackItem>(); - qRegisterMetaTypeStreamOperators<QIviAudioTrackItem>(); m_threadPool->setMaxThreadCount(1); connect(m_player, &QMediaPlayer::durationChanged, diff --git a/src/plugins/ivimedia/media_simulator/searchandbrowsebackend.cpp b/src/plugins/ivimedia/media_simulator/searchandbrowsebackend.cpp index ae64037..353c524 100644 --- a/src/plugins/ivimedia/media_simulator/searchandbrowsebackend.cpp +++ b/src/plugins/ivimedia/media_simulator/searchandbrowsebackend.cpp @@ -87,9 +87,7 @@ SearchAndBrowseBackend::SearchAndBrowseBackend(const QSqlDatabase &database, QOb m_threadPool->setMaxThreadCount(1); qRegisterMetaType<SearchAndBrowseItem>(); - qRegisterMetaTypeStreamOperators<SearchAndBrowseItem>(); qRegisterMetaType<QIviAudioTrackItem>(); - qRegisterMetaTypeStreamOperators<QIviAudioTrackItem>(); m_db = database; m_db.open(); diff --git a/src/tools/ivigenerator/templates/frontend/module.cpp.tpl b/src/tools/ivigenerator/templates/frontend/module.cpp.tpl index ec0f87b..a99eaa6 100644 --- a/src/tools/ivigenerator/templates/frontend/module.cpp.tpl +++ b/src/tools/ivigenerator/templates/frontend/module.cpp.tpl @@ -133,7 +133,6 @@ void {{class}}::registerTypes() {% for enum in module.enums %} qRegisterMetaType<{{class}}::{{enum|flag_type}}>(); - qRegisterMetaTypeStreamOperators<{{class}}::{{enum|flag_type}}>(); qIviRegisterPendingReplyType<{{class}}::{{enum|flag_type}}>(); {% if enum.is_flag %} //Workaround for https://bugreports.qt.io/browse/QTBUG-75676 @@ -143,8 +142,6 @@ void {{class}}::registerTypes() {% endfor %} {% for struct in module.structs %} qRegisterMetaType<{{struct}}>(); - qRegisterMetaTypeStreamOperators<{{struct}}>(); - QMetaType::registerEqualsComparator<{{struct}}>(); qIviRegisterPendingReplyType<{{struct}}>(); {% endfor %} } diff --git a/src/tools/ivigenerator/templates/frontend/struct.cpp.tpl b/src/tools/ivigenerator/templates/frontend/struct.cpp.tpl index 00ea37b..78036d6 100644 --- a/src/tools/ivigenerator/templates/frontend/struct.cpp.tpl +++ b/src/tools/ivigenerator/templates/frontend/struct.cpp.tpl @@ -147,18 +147,18 @@ void {{class}}::fromJSON(const QVariant &variant) QVariant value = qtivi_convertFromJSON(variant); // First try to convert the values to a Map or a List // This is needed as it could also store a QStringList or a Hash - if (value.canConvert(QVariant::Map)) - value.convert(QVariant::Map); - if (value.canConvert(QVariant::List)) - value.convert(QVariant::List); + if (value.canConvert(QMetaType::fromType<QVariantMap>())) + value.convert(QMetaType::fromType<QVariantMap>()); + if (value.canConvert(QMetaType::fromType<QVariantList>())) + value.convert(QMetaType::fromType<QVariantList>()); - if (value.type() == QVariant::Map) { + if (value.metaType() == QMetaType::fromType<QVariantList>()) { QVariantMap map = value.toMap(); {% for field in struct.fields %} if (map.contains(QStringLiteral("{{field}}"))) d->m_{{field}} = map.value(QStringLiteral("{{field}}")).value<{{field|return_type}}>(); {% endfor %} - } else if (value.type() == QVariant::List) { + } else if (value.metaType() == QMetaType::fromType<QVariantList>()) { QVariantList values = value.toList(); {% for field in struct.fields %} d->m_{{field}} = values.value({{loop.index0}}).value<{{field|return_type}}>(); |