首页 > 代码库 > QT下 enum转QString
QT下 enum转QString
先在QT5.7
class EnumTest :public QObject { Q_OBJECT public: EnumTest(); enum PINYINENUM { XYDA, XYDB, XYDC, XYDD }; Q_ENUM(PINYINENUM) static QString getPinYin(int pinYinID); };
#include "enumtest.h" EnumTest::EnumTest() { } QString EnumTest::getPinYin(int pinYinID) { QMetaEnum metaEnum = QMetaEnum::fromType<EnumTest::PINYINENUM>(); const char* pinYinChars=metaEnum.valueToKey(pinYinID); QString result(pinYinChars); return result; }
#include <QCoreApplication> #include "enumtest.h" #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug()<<EnumTest::getPinYin( 1); return a.exec(); }
编译到开发板上,报错
enumtest.h: error: ISO C++ forbids declaration of ‘Q_ENUM‘ with no type [-fpermissive]
Q_ENUM(PINYINENUM)
开发板上QT版本5.2,没有这个Q_ENUM,只能另改方法
换成下下面的
class EnumTest :public QObject { Q_OBJECT public: EnumTest(); enum PINYINENUM { XYDA, XYDB, XYDC, XYDD }; Q_ENUMS(PINYINENUM) static QString getPinYin(int pinYinID); };
#include "enumtest.h" EnumTest::EnumTest() { } QString EnumTest::getPinYin(int pinYinID) { const QMetaObject metaObject = EnumTest::staticMetaObject; int enumIndex = metaObject.indexOfEnumerator("PINYINENUM"); if(enumIndex == -1) { qDebug()<< ""; } QMetaEnum en = metaObject.enumerator(enumIndex); return QString(en.valueToKey(pinYinID)); }
#include <QCoreApplication> #include "enumtest.h" #include <QDebug> void readData(); int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug()<<EnumTest::getPinYin(1); return a.exec(); }
编译通过。
QT下 enum转QString
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。