enum eType
{
eType_one = 0,
eType_Two,
eType_Three,
};
Q_ENUM(eType) // 注册QMetaEnum
1、QMetaEnum提供了enum-》string enum-》string
2、转化
template<class T>
QString EnumToString(T type)
{
QMetaEnum metaEnum = QMetaEnum::fromType<T>();
return metaEnum.valueToKey(type);
}
template<class E>
E StringToEnum(const QString &key)
{
QMetaEnum metaEnum = QMetaEnum::fromType<E>();
return (E)metaEnum.keyToValue(key.toUtf8().data());
}
3、注意事项:QENUM 注册枚举类,必须放在具有Q_OBJECT或Q_GADGET宏的类中的枚举声明之后。
(1)、Q_OBJECT是QT基础类可以使用Q_PROPERTY、Q_ENUM、Q_INVOKABLE、信号和槽机制---常用于交互操作
(2)、Q_GADGET 万能容器可以使用Q_PROPERTY、Q_ENUM、Q_INVOKABLE,但不可以用信号和槽机制---常用于结构定义