#define EnumToStr(val) SetToStr(#val)
inline QString EnumsToQStr(QString enumName,int Index,int enumLast, QMetaObject tmp)
{
if (Index < 0 || Index >= enumLast)
{
return QString();
}
QByteArray ba = enumName.toLatin1().data();
const QMetaObject obj = tmp;//前提是类加了Q_OBJECT宏和Q_ENUMS
int enumIndex = obj.indexOfEnumerator((const char*)ba);
if (enumIndex < 0)
{
return QString();
}
QMetaEnum en = obj.enumerator(enumIndex);
return QString(en.valueToKey(Index));
}
inline QString SetToStr(const char*val)
{
std::string str = val;
return QString::fromStdString(str.c_str());
};
enum mEnum
{
a,
b,
c,
last
}
Q_ENUMS(mEnum)//调用前先注册为qenum
//调用
main()
{
for i=0 i<mEnum::last i++
{
QString str = EnumsToQStr(EnumToStr(mEnum),i,AitECameraTemplate_Last,this->staticMetaObject)
}
}
枚举转qstring
最新推荐文章于 2024-12-17 21:00:00 发布