Qt中枚举类型转字符串输出(enum转QString)

本文介绍了在Qt编程中如何使用Q_ENUM宏注册枚举类型,并通过QMetaEnum将枚举值转换为QString。方法一是直接在类中定义并注册枚举,方法二是创建单独的EnumClass来存放枚举,以便多处复用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:

在你的类的头文件中添加类变量(注意一定要用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"

具体代码如下:

 

 

 

 输出结果如下:

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GreenHandBruce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值