[Interest] Qt 5 -> 6: In QQmlEngine, Qt.Checked, etc. are no longer available

Thorbjørn Lindeijer bjorn at lindeijer.nl
Fri Jun 24 15:57:54 CEST 2022


On Fri, Jun 24, 2022, at 11:34, Ulf Hermann wrote:
> Indeed, in QQmlEngine the global object is frozen. You cannot replace
> its properties. Apparently you can still add to it, though. But see
> https://codereview.qt-project.org/c/qt/qtdeclarative/+/418536/1 for a
> possible solution.

Since you mentioned I can add members to the Qt object, my current workaround is as follows:

#if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
    QJSValue qtObject = globalObject.property(QStringLiteral("Qt"));
    auto &qtNamespace = Qt::staticMetaObject;
    for (int i = qtNamespace.enumeratorCount(); i >= 0; --i) {
        auto metaEnum = qtNamespace.enumerator(i);
        for (int k = metaEnum.keyCount(); k >= 0; --k)
            qtObject.setProperty(QString::fromLatin1(metaEnum.key(k)), metaEnum.value(k));
    }
#endif

This works in QQmlEngine as well, so I think that'll be fine until these are added back properly. :-)

Thanks,
Thorbjørn


More information about the Interest mailing list