介绍
QMetaEnum类属于Qt core模块,提供了一系列针对枚举类型的操作函数,当然不能操作任意枚举类型,若想进行自定义枚举的操作,首先需要对枚举做处理,此时需要QObject类的帮助,使用此类提供的Q_ENUM模板。
自定义枚举类型
#include <QObject>
class TestClass : public QObject {
Q_OBJECT //必须有
public:
enum TestEnum {
one = 0,
two,
three
};
Q_ENUM(TestEnum)
};
枚举类型的声明与c++标准相同,只不过需要将枚举放置在一个继承自QObject的子类中,同时要使用Q_OBJECT模板,在枚举声明后面添加Q_ENUM(enum_name)即可。
Qt自身的枚举类型都不需要此操作,可以直接使用。
- 必须有Q_OBJECT? 不能只继承自QObject
- Q_ENUM和Q_OBJECT都不要加分号,强迫症会出错
- 很遗憾不能将枚举类型直接放置在全局域
疑惑:这个类必须在单独的文件