QMetaEnum利用Qt元数据实现枚举(enum)类型值及字符串转换

本文介绍了如何利用QMetaEnum在Qt中进行自定义枚举类型的处理,包括Q_ENUM的使用,以及QMetaEnum如何实现枚举值与字符串之间的映射转换。QMetaEnum类提供了枚举名称、枚举类型所属类和枚举项数量等信息,方便进行枚举操作。
摘要由CSDN通过智能技术生成
 

介绍

QMetaEnum类属于Qt core模块,提供了一系列针对枚举类型的操作函数,当然不能操作任意枚举类型,若想进行自定义枚举的操作,首先需要对枚举做处理,此时需要QObject类的帮助,使用此类提供的Q_ENUM模板。

详细信息请见官方文档:QObjectQMetaEnum

自定义枚举类型

#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都不要加分号,强迫症会出错
  • 很遗憾不能将枚举类型直接放置在全局域

疑惑:这个类必须在单独的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值