介绍
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都不要加分号,强迫症会出错
- 很遗憾不能将枚举类型直接放置在全局域
疑惑:这个类必须在单独的文件?直接放到main.cpp中一直报错,具体原因没有详细研究
QMetaEnum使用
Qt自身的枚举都可以直接使用。

本文介绍了如何利用QMetaEnum在Qt中进行自定义枚举类型的处理,包括Q_ENUM的使用,以及QMetaEnum如何实现枚举值与字符串之间的映射转换。QMetaEnum类提供了枚举名称、枚举类型所属类和枚举项数量等信息,方便进行枚举操作。
最低0.47元/天 解锁文章
1145

被折叠的 条评论
为什么被折叠?



