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 to Enum

int fruitType = 0;
Enum::Fruit fruit = (Enum::Fruit)fruitType;//Enum本身还是数值型的,所以只需要直接强制类型转换即可。但是我没有试过枚举不存在的值强制转换成枚举会是什么

值转枚举项的字符(Value to key) int to QString

#include <QMetaEnum>

int fruitType = 0;
QMetaEnum meta = QMetaEnum::fromType<Enum::Fruit>();
QString itemKey = meta.valueToKey(fruitType);

字符串转枚举值,结果为数字(Key to Value) QString to Enum

QString fruit = "POTATO";
QMetaEnum meta = QMetaEnum::fromType<Enum::Fruit>();
int value = meta.keyToValue(fruit.toStdString().data());//入参是char *

字符串转枚举类型,结果为枚举,QString to Enum

QString fruit = "POTATO";
QMetaEnum meta = QMetaEnum::fromType<Enum::Fruit>();
Enum::Fruit fruitItem = (Enum::Fruit)meta.keyToValue(fruit.toStdString().data());//入参是char *

枚举转字符串,Enum to QString

Enum::Fruit fruit = Fruit::POTATO;
QMetaEnum meta = QMetaEnum::fromType<Enum::Fruit>();
QString fruitStr = meta.valueToKey(fruit);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM