使用普通枚举类型,我能够通过以下代码访问Q_ENUMS属性和枚举类型的字符表示:
// in .h
class EnumClass : public QObject
{
Q_OBJECT
public:
enum MyEnumType { TypeA, TypeB };
Q_ENUMS(MyEnumType)
private:
MyEnumType m_type;
};
// in .cpp
m_type = TypeA;
...
const QMetaObject &mo = EnumClass::staticMetaObject;
int index = mo.indexOfEnumerator("MyEnumType");
QMetaEnum metaEnum = mo.enumerator(index);
QString enumString = metaEnum.valueToKey(m_type); // contains "TypeA"
如果我想要使用C++11的强类型枚举特性,就像这样:
enum class MyEnumType { TypeA, TypeB };
访问元信息不再起作用了。我猜测,Qt不再将其识别为枚举。
在使用强类型枚举时,有没有办法访问枚举的字符表示?