diff options
Diffstat (limited to 'src/corelib/kernel/qmetaobject.h')
-rw-r--r-- | src/corelib/kernel/qmetaobject.h | 9 |
1 files changed, 9 insertions, 0 deletions
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; |