社交網(wǎng)站源代碼指數(shù)計(jì)算器
Part1: Summary
項(xiàng)目中我們常用到命名,使用 enum 轉(zhuǎn)成 string ,方便簡(jiǎn)潔;Qt給我們提供了一個(gè)很方便的功能 Q_ENUM,可以實(shí)現(xiàn)枚舉字符串互轉(zhuǎn);
Q_ENUM宏將枚舉注冊(cè)到元對(duì)象系統(tǒng)中;
QMetaEnum::fromType獲取枚舉的 QMetaEnum對(duì)象;
valueToKey或 keyToValue進(jìn)行轉(zhuǎn)換操作
下面我們看一下具體應(yīng)用;
public:enum DisplayPart{Head= 100,Hand,Neck,Leg};Q_ENUM(DisplayPart);
Part2: enum to string?
QMetaEnum metaPart = QMetaEnum::fromType<DisplayPart>();qDebug()<<"show :"<<metaPart.valueToKey(Head);
輸出:show : Head
Part3: string to enum
QMetaEnum metaPart = QMetaEnum::fromType<DisplayPart>();qDebug()<<"show :"<<metaPart.keyToValue("Head");
輸出:show : 100
Part3: 使用模板
template <typename T>static T strToEnm(QString str){QMetaEnum metaEnm = QMetaEnum::fromType<T>();return (T)metaEnm.keyToValue(str.toStdString().data());}template <typename T>static QString enmToStr(T value){QMetaEnum metaEnm = QMetaEnum::fromType<T>();return metaEnm.valueToKey(value);}
Part4: Test
enum to string
qDebug()<<"show :"<<enmToStr<DisplayPart>(Head);
輸出:show : Head
DisplayPart part = strToEnm<DisplayPart>("Head");qDebug()<<"show :"<<(int)part;
輸出:show : 100