// Copyright (C) 2018 Klaralvdalens Datakonsult AB (KDAB). // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include #include #include #include template QHash enumToNameMap(const char *enumName) { const QMetaObject metaObj = Obj::staticMetaObject; const int indexOfEnum = metaObj.indexOfEnumerator(enumName); const QMetaEnum metaEnum = metaObj.enumerator(indexOfEnum); const int keysCount = metaEnum.keyCount(); QHash v; v.reserve(keysCount); for (int i = 0; i < keysCount; ++i) v[metaEnum.value(i)] = metaEnum.key(i); return v; } class EnumNameMapper : public QObject { Q_OBJECT public: Q_INVOKABLE QString statusName(int v) const { return m_statusMap.value(v); } Q_INVOKABLE QString formatName(int v) const { return m_formatMap.value(v); } Q_INVOKABLE QString targetName(int v) const { return m_targetMap.value(v); } Q_INVOKABLE QString handleTypeName(int v) const { return m_handleTypeMap.value(v); } private: const QHash m_statusMap = enumToNameMap("Status"); const QHash m_formatMap = enumToNameMap("TextureFormat"); const QHash m_targetMap = enumToNameMap("Target"); const QHash m_handleTypeMap = enumToNameMap("HandleType"); }; int main(int argc, char* argv[]) { QGuiApplication app(argc, argv); QQuickView view; QQmlContext *ctx =view.rootContext(); EnumNameMapper mapper; ctx->setContextProperty(QStringLiteral("nameMapper"), &mapper); view.setSource(QUrl("qrc:/main.qml")); view.show(); return app.exec(); } #include "main.moc"