一.QMetaEnum使用
QMetaEnum meta = QMetaEnum::fromType<FruitType>();
qDebug()<<"RequestType:"<<meta.key(1);
二.报错
在使用QMetaEnum获取枚举类型对应的字符串时,报了以下3个错误:
1.error: static assertion failed: QMetaEnum::fromType only works with enums declared as Q_ENUM or Q_FLAG Q_STATIC_ASSERT_X(QtPrivate::IsQEnumHelper<T>::Value,
2.error: ‘qt_getEnumMetaObject’ was not declared in this scope const QMetaObject *metaObject = qt_getEnumMetaObject(T());
3. error: ‘qt_getEnumName’ was not declared in this scope const char *name = qt_getEnumName(T());
三.解决办法
需要在定义枚举类型时加上Q_ENUM将自定义枚举类型注册一下,写法如下:
enum FruitType{
Apple,
Banana,
Pear,
Strawberry,
Watermelon,
};
Q_ENUM(FruitType)
需要注意的是:Q_ENUM需要写在继承于QObject的类中,并且该类添加了Q_OBJECT宏。
这样即可获取到枚举类型对应的字符串
RequestType: Banana