QT-枚举与字符串互相转换

转自:https://cloud.tencent.com/developer/article/1463790

步骤:
项目文件添加 QT+=core;
创建类 Car继承于 QObject并使用 Q_OBJECT宏;
类内添加枚举 Color;
使用 Q_ENUM宏将 Color枚举注册到元对象系统中;
使用 QMetaEnum::fromType获取枚举的 QMetaEnum对象;
使用 valueToKey或 keyToValue进行转换操作。

returncode.h

#ifndef RETURNCODE_H
#define RETURNCODE_H

#include <QObject>
#include <QMetaEnum>
#include <QDebug>

class returnCode : public QObject
{
    Q_OBJECT
public:
    explicit returnCode(QObject *parent = nullptr);

    enum nAdsState
    {
        ADSSTATE_INVALID			= 0,
        ADSSTATE_IDLE				= 1,
        ADSSTATE_RESET				= 2,
        ADSSTATE_INIT				= 3,
        ADSSTATE_START				= 4,
        ADSSTATE_RUN				= 5,
        ADSSTATE_STOP				= 6,
        ADSSTATE_SAVECFG			= 7,
        ADSSTATE_LOADCFG			= 8,
        ADSSTATE_POWERFAILURE       = 9,
        ADSSTATE_POWERGOOD			= 10,
        ADSSTATE_ERROR				= 11,
        ADSSTATE_SHUTDOWN			= 12,
        ADSSTATE_SUSPEND			= 13,
        ADSSTATE_RESUME				= 14,
        ADSSTATE_CONFIG				= 15,
        ADSSTATE_RECONFIG			= 16,
        ADSSTATE_STOPPING			= 17,
        ADSSTATE_MAXSTATES
    };
    Q_ENUM(nAdsState)

signals:

public slots:
    void checkCode(short code);
};

#endif // RETURNCODE_H

returncode.cpp

void returnCode::checkCode(short code)
{
    QMetaEnum metaColor = QMetaEnum::fromType<returnCode::nAdsState>();
    qDebug()<<metaColor.valueToKey(code);
}

mainwindow.cpp

connect(this,SIGNAL(sendCode(short)),rCode,SLOT(checkCode(short)));

//向PLC读取PLC的状态信息
nErr = AdsSyncReadStateReq(pAddr, &nAdsState, &nDeviceState);
if (nErr)
{
    qDebug()<<"Error: AdsSyncReadStateReq: " << nErr << '\n';
}
else
{
    qDebug()<<"PLCState: " << nAdsState << '\n'; // 输出PLC状态信息代码
    emit sendCode(static_cast<short>(nAdsState));// 输出PLC状态具体信息
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值