Qt 枚举类型 值、字符串、枚举类型互转


枚举类型

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 *