枚举类型
class Enum : public QObject{
Q_OBJECT
public:
enum Fruit{
APPLE = 0,
BANANA,
POTATO
}
Q_ENUM(Fruit);//向Qt注册此枚举文件,若有多个枚举,则在对应枚举下注册即可,如下
enum Vagetables{
TOMATO,//默认初值从零起
ONION,
POTATO
}
Q_ENUM(Vagetables);//嗯
}
值转枚举
int fruitType = 0;
Enum::Fruit fruit = (Enum::Fruit)fruitType;//Enum本身还是数值型的,所以只需要直接强制类型转换即可。但是我没有试过枚举不存在的值强制转换成枚举会是什么
值转枚举项的字符(Value to key)
#include
int fruitType = 0;
QMetaEnum meta = QMetaEnum::fromType();
QString itemKey = meta.valueToKey(fruitType);
字符串转枚举值,结果为数字(Key to Value)
QString fruit = "POTATO";
QMetaEnum meta = QMetaEnum::fromType();
int value = meta.KeyToValue(fruit.toStdString().data());//入参是char *
字符串转枚举类型,结果为枚举
QString fruit = "POTATO";
QMetaEnum meta = QMetaEnum::fromType();
Enum::Fruit fruitItem = (Enum::Fruit)meta.KeyToValue(fruit.toStdString().data());//入参是char *