方法一:
在你的类的头文件中添加类变量(注意一定要用public:修饰):
public:
enum OutType
{
TYPE1,
TYPE2,
TYPE3,
TYPE4,
TYPE5,
};
Q_ENUM(OutType)//注册这个枚举
在你的类的源文件添加如下代码:
QMetaEnum metaEnum = QMetaEnum::fromType<OutType>();
int nEnumNum = metaEnum.keyCount();
for(int i=0;i<nEnumNum;i++)
{
const char* s = metaEnum.valueToKey(i);
QString outtype(s);
qDebug()<<"outtype"<<i<<"to QString:"<<outtype;
}
输出结果如下:
outtype 0 to QString: "TYPE1"
outtype 1 to QString: "TYPE2"
outtype 2 to QString: "TYPE3"
outtype 3 to QString: "TYPE4"
outtype 4 to QString: "TYPE5"
方法二:
如果你的这个枚举变量需要被很多类文件使用,那么就得把枚举放在本类外面定义,但是要使用Q_ENUM来注册枚举类型的话,就必须把枚举放在一个有Q_OBJECT宏定义的类中,否则无法注册。所以我的解决方法是新建一个EnumClass类,然后把枚举放在这个类里面,然后所有要使用这个枚举的类里面#include "EnumClass.h"
具体代码如下:
输出结果如下: