diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2014-08-10 18:56:37 +0200 |
---|---|---|
committer | Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> | 2015-02-05 14:28:18 +0000 |
commit | 9b72bcfd608817509d062f0971212cccfbe3d285 (patch) | |
tree | c3ff046b493af7e202cbdf460cc224368c5bd755 /src | |
parent | d43d03529f7bc169776be161c2978856eefb0e93 (diff) |
Introduces QMetaEnum::fromType
Change-Id: I1976c1844e52ef8d70a1bbe9945f3299428dbf87
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/kernel/qmetaobject.cpp | 8 | ||||
-rw-r--r-- | src/corelib/kernel/qmetaobject.h | 9 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 3e2fb46143..1af0914ad8 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -2677,6 +2677,14 @@ QByteArray QMetaEnum::valueToKeys(int value) const return keys; } +/*! + \fn QMetaEnum QMetaEnum::fromType() const + \since 5.5 + + Returns the QMetaEnum corresponding to the type in the template parameter. + The enum needs to be declared with Q_ENUM. +*/ + static QByteArray qualifiedName(const QMetaEnum &e) { return QByteArray(e.scope()) + "::" + e.name(); diff --git a/src/corelib/kernel/qmetaobject.h b/src/corelib/kernel/qmetaobject.h index fdbcf5171d..eaef05f03d 100644 --- a/src/corelib/kernel/qmetaobject.h +++ b/src/corelib/kernel/qmetaobject.h @@ -223,6 +223,15 @@ public: inline const QMetaObject *enclosingMetaObject() const { return mobj; } inline bool isValid() const { return name() != 0; } + + template<typename T> static QMetaEnum fromType() { + Q_STATIC_ASSERT_X(QtPrivate::IsQEnumHelper<T>::Value, + "QMetaEnum::fromType only works with enums declared as Q_ENUM or Q_FLAG"); + const QMetaObject *metaObject = qt_getEnumMetaObject(T()); + const char *name = qt_getEnumName(T()); + return metaObject->enumerator(metaObject->indexOfEnumerator(name)); + } + private: const QMetaObject *mobj; uint handle; |