目录

  • 1.简述
  • 2.Q_ENUM用法
    • 2.1 声明使用
    • 2.2 测试例子
  • 3.用模板实现一个字符串枚举互转
    • 3.1代码
    • 3.2 用法示例

1.简述

数据库里用到了枚举的存储,比如一个设备有两个状态,保持数据库和代码的可读性,当然是用枚举了,那就需要把枚举转成字符串存储进去,读的时候再转回来。

Qt 中支持了枚举与字符串互转的用法,通过moc编译器实现,
所以使用的时候需要添加Q_OBJECT宏继承QObject
并且声明为public属性,以便外部使用。

2.Q_ENUM用法

2.1 声明使用
class Dialog : public QDialog
{Q_OBJECT
public:enum EnmState{ENM_STATE_A = 0,ENM_STATE_B = 2,ENM_STATE_C,};Q_ENUM(EnmState);
};
2.2 测试例子

尝试一下QMetaEnum提供的各种功能

Dialog::Dialog(QWidget *parent): QDialog(parent)
{resize(820,540);QMetaEnum enmState = QMetaEnum::fromType<Dialog::EnmState>();qDebug()<<enmState.name();//枚举的类型名称qDebug()<<enmState.keyCount();//键个数qDebug()<<enmState.isValid()<<enmState.scope();//是否有效 声明自哪个类qDebug()<<enmState.keyToValue("ENM_STATE_A"); //字符串转枚举qDebug()<<QString(enmState.valueToKey(ENM_STATE_A)); //枚举转字符串qDebug()<<QString(enmState.valueToKey(ENM_STATE_B));for(int i = 0;i < enmState.keyCount();i++){ //遍历枚举qDebug()<<QString(enmState.key(i))<<enmState.value(i);}
}
EnmState
3
true Dialog
0
"ENM_STATE_A"
"ENM_STATE_B"
"ENM_STATE_A" 0
"ENM_STATE_B" 2
"ENM_STATE_C" 3

3.用模板实现一个字符串枚举互转

3.1代码
class CEnmDef:public QObject{Q_OBJECT
public:enum EnmDevSwitch{ENM_SWITCH_ON = 0,ENM_SWITCH_OFF,};Q_ENUM(EnmDevSwitch)template <typename EnmType>static EnmType strToEnm(QString strText){QMetaEnum metaEnm = QMetaEnum::fromType<EnmType>();return (EnmType)metaEnm.keyToValue(strText.toStdString().data());}template <typename EnmType>static QString enmToStr(EnmType enmVal){QMetaEnum metaEnm = QMetaEnum::fromType<EnmType>();return metaEnm.valueToKey(enmVal);}
}
3.2 用法示例
  //字符串转枚举CEnmDef::EnmDevSwitch enmVal = CEnmDef::strToEnm<CEnmDef::EnmDevSwitch>("ENM_SWITCH_ON");//枚举转字符串QString strSwitch = CEnmDef::enmToStr<CEnmDef::EnmDevSwitch>(CEnmDef::ENM_SWITCH_ON);

Qt Q_ENUM使用 枚举字符串互转相关推荐

  1. QT 实现16进制与字符串互转

    QT 实现16进制与字符串互转 文章目录 QT 实现16进制与字符串互转 前言 一.字符串QString转换16进制 二.16进制转换为字符串QString 三.正则表达式限制输入16进制 四.文本自 ...

  2. javascript json和json字符串互转

    javascript json和json字符串互转 <!DOCTYPE html> <html lang="en"><head><meta ...

  3. python中numpy数组和字符串互转(互转后数据完全一致)

    python中numpy数组和字符串互转(互转后数据完全一致) 代码: import numpy as np # 创建数组arr arr = np.array([ -1.8264365 , -0.63 ...

  4. java 日期和字符串互转,根据当天整天时间 得到当天最后一秒的日期时间

    2019独角兽企业重金招聘Python工程师标准>>> java 日期和字符串互转,根据当天整天时间   得到当天最后一秒的日期时间 package com.hi;import ja ...

  5. golang 字节切片 数组 字符串 互转

    目录 基本认知 将字符串转为字节切片 将字节切片转为字符串 性能 基本认知 在字符串和字节切片(数组)之间进行转换时,会得到一个全新的切片,其中包含与字符串相同的字节,反之亦然. 转换不会修改数据 唯 ...

  6. QT如何实现对于字符串数学公式计算

    QT如何实现对于字符串数学公式计算 第一步: 在.pro文件中加入 QT += script 第二步: 在.h头文件中添加 #include 第三步: QScriptEngine scriptEngi ...

  7. 【⭐C/C++の深入浅出⭐】int数与多枚举值互转

    int数与多枚举值互转 在C/C++在C/C++的开发中经常会遇到各种数据类型互转的情况,正常的互转有:单个枚举转int数,int数转float数,float数转double数等.但是我们有时也会遇到 ...

  8. Java 字符串,byte[],16进制的字符串互转

    Java 字符串,byte[],16进制的字符串互转 /** * 字符串转换成十六进制字符串 */ public static String str2HexStr(String str) { char ...

  9. 如何获取枚举字符串,值及遍历枚举(转)

    http://www.cnblogs.com/fanwenxuan/archive/2007/10/16/926019.html 枚举是一个特定的常量集合组成的独特类型 using System; p ...

  10. Python 图片与字符串互转

    Python 图片与字符串互转 1. 图片转化为base64字符串 2. base64字符串转化为图片 3. 图片转化为字符串 4. 字符串转化为图片 1. 图片转化为base64字符串 import ...

最新文章

  1. 马斯克刚刚宣布辞去特斯拉董事会职务,仍然担任CEO
  2. qpython3安装kivy_kivy库的安装
  3. element ui dialog 对话框设置fullscreen_UI设计中的弹窗设计素材,技巧快get起来
  4. ios14.3开发之使用纯代码创建UITabbarController
  5. 安装包卸载时如何删除安装时写在系统环境变量中的内容
  6. html 鼠标图标做成动画效果,怎么实现鼠标经过图标动画效果
  7. Qt笔记-QSslSocket双向认证
  8. so文件linux注册,SO文件格式
  9. ZOJ 3810 A Volcanic Island (2014年牡丹江赛区网络赛B题)
  10. python编程从入门到实践第八章_Python编程从入门到实践的第三天
  11. CentOS 6.6下PXE+Kickstart无人值守安装操作系统
  12. JVM监控及诊断工具GUI篇之Arthas(三):class、classloader相关指令
  13. 用Python把20年的GDP、人口以及房价数据进行了可视化
  14. awk、ruby计算总分排名,相同总分显示同一名次
  15. java opencv 阀值分割_opencv-阈值分割
  16. 人员定位管理系统保障危化品行业安全作业
  17. WEB:Wife_wife
  18. 读书笔记||函数探幽
  19. 海川QK1209 低压按键台灯充电 LED 驱动 IC- 昱灿电子
  20. Inno 简单使用心得记录

热门文章

  1. 看到大家在讨论阿拉伯数字-》汉字数字的转换,拿出我去年写的C版本
  2. python爱好者社区 周琦_这么多年来,我算想明白了!
  3. vgcreate 创建卷组
  4. 如何在js中实现html语言,如何使用脚本标签将JavaScript插入HTML
  5. 最新sfc模拟器安卓汉化版_卡车模拟器山货运卡车3D游戏安卓最新版 v1.0 卡车模拟器山货运卡车3D游戏下载...
  6. channel串行化_为什么串行接口比并行接口快
  7. php pathinfo 解析,php 解析pathinfo 类
  8. php 时间戳 24小时制,如何在php中添加24小时的unix时间戳?(How do I add 24 hours to a unix timestamp in php?)...
  9. Python开胃菜(1):搭建开发环境
  10. cardBattle游戏启动场景设计