QMetaEnum 类提供了一个枚举的元数据。我们可以使用该类的静态模板函数,fromType<enumerator>来获得关于某个枚举的QMetaEnum对象,然后就可以调用该类的成员函数来获得该枚举的相关信息。该枚举必须使用Q_ENUM宏进行声明。
我们可以使用name()函数来获得枚举的名字;使用key()函数获得枚举的键,即每个枚举项的名字;使用keyCount()函数得到键的个数。
isFlag()函数可以用来判断该枚举是否可以作为flag使用,即每一个枚举项是否可以使用OR操作符进行运算。
keyToValue(),valueToKey(),keysToValue()和valueToKeys()函数,可以用来在枚举项的整数表示和字符串表示之间进行转换。
scope()函数可以返回该枚举作用域的类名,即给枚举所在的类。
下面,我们通过一个例子,简单的使用一下该类的每一个成员函数。代码如下:
我们先声明一个QObject的子类,在该类中定义一个枚举类型:
#ifndef MYCLASS_H
#define MYCLASS_H
#include <QObject>
class MyClass : public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = 0);
~MyClass(){}
enum Priority { High, Low, VeryHigh, VeryLow };
Q_EN