QT 如何实现enum与字符串的互转

将enum中定义的枚举值,以字符串的形式写入文件,同时也能从字符串转为枚举值。举例说明:
ColorSelector中的Colors枚举,我们希望 kColorRed 这个写入到本地文件时,可以直接保存“kColorRed”,而非kColorRed对应的值(100)。但是从本地文件读取到“kColorRed”时,可以转换为对应的值(100)。

头文件

#ifndef ENUMCLASS_H
#define ENUMCLASS_H#include <QObject>class ColorSelector : public QObject
{Q_OBJECT
public://enum Colors{kColorRed=100,kColorGreen,kColorBlue,kColorGray,kColorBlack,kColorPink,kColorBrown,kColorOrange,kColorDark,};Q_ENUM(Colors);public:explicit ColorSelector(QObject *parent = nullptr);void output();
signals:};#endif // ENUMCLASS_H

cpp文件

#include "enumclass.h"
#include <QMetaEnum>
#include <QDebug>ColorSelector::ColorSelector(QObject *parent) : QObject(parent)
{}void ColorSelector::output()
{QMetaEnum metaEnum;metaEnum = QMetaEnum::fromType<Colors>();int val = metaEnum.keyToValue("kColorBlack");qDebug() << "val=" << val;Colors clr = static_cast<Colors>(metaEnum.keyToValue("kColorBrown"));qDebug() << "clr=" << clr;QString key = metaEnum.valueToKey(clr);qDebug() << "key=" << key;QString key2 = metaEnum.valueToKey(kColorOrange);qDebug() << "key2=" << key2;qDebug() << "count=" << metaEnum.keyCount();
}

测试代码:

int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);ColorSelector cls;cls.output();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94303.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SLAM卷不动了,机器人还有哪些方向能做?

关注gongzhonghao【CVPR顶会精选】众所周知&#xff0c;机器人因复杂环境适应性差、硬件部署成本高&#xff0c;对高效泛化一直需求迫切。再加上多传感器协同难题、真实场景数据获取不易&#xff0c;当下对迁移学习 机器人智能融合的研究也就更热烈了。不过显然&#xff0c;这…

H.266 vs H.265/AV1/H.264:从工程落地看下一代视频系统的技术演进

一、背景&#xff1a;编解码标准演进背后的技术驱动 视频编码标准的更迭&#xff0c;从未只是一次简单的技术升级&#xff0c;而是对码率压缩效率、编码复杂度与画质质量三者之间平衡点的持续探索。在 H.264 成为全平台事实标准的十余年里&#xff0c;它成功支撑了 SD 至 1080…

Javascript面试题及详细答案150道之(031-045)

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

Git如何同步本地与远程仓库并解决冲突

在团队协作开发中&#xff0c;保持本地仓库与远程仓库同步是至关重要的。本文将详细介绍如何使用 Git 更新本地仓库至最新远程版本&#xff0c;并深入解析冲突的产生原因及解决方法。一、同步本地与远程仓库1. 检查远程仓库配置首先&#xff0c;确保本地仓库已正确关联远程仓库…

Hadoop MapReduce 3.3.4 讲解~

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

1、【数学】【硬币悖论】旋转硬币问题

问题描述&#xff1a; 两个相同的硬币&#xff0c;半径都是 rrr。一个硬币&#xff08;称为“动硬币”&#xff09;沿着另一个固定不动的硬币&#xff08;“静硬币”&#xff09;的外边缘无滑动地滚动一圈&#xff0c;回到起始位置。问&#xff1a;动硬币自身旋转了几圈&#x…

【盘古100Pro+开发板实验例程】FPGA学习 | PCIE 通信测试实验例程

本原创文章由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 1. 实验简介 实验目的&#xff1a; 完成 PCIE 通信测试。 实验环境&#xff1a; Window11 PDS2022.2-SP6.4 硬件环…

基于高阶累积量的调制识别

基于高阶累积量的调制识别是一种利用信号的高阶统计特性来识别不同调制方式的方法。 1. 基本原理 高阶累积量&#xff08;Higher-Order Cumulants&#xff09;是信号处理中的一个重要工具&#xff0c;能够捕捉信号的非高斯特性。与高阶矩相比&#xff0c;高阶累积量对高斯噪声具…

Java常用数据结构入门

Java常用数据结构入门 前言 数据结构是程序设计中的基础&#xff0c;掌握常用数据结构能帮助你更高效地解决问题。本文面向Java初学者&#xff0c;介绍Java中常用的数据结构及其基本使用方法。 1. 数组 (Array) 数组是最基础的数据结构&#xff0c;可以存储固定大小的同类型…

Android GPU测试

一、Basemark GPU 可选择进行vulkan和opengl测试&#xff1a; 二、GFXBench 进行各种offscreen测试&#xff08;包括曼哈顿离屏&#xff09; 这是由GFXBench图形性能测试套件提供的一个著名3D图形渲染场景。 它模拟了一个复杂的未来都市环境&#xff08;类似曼哈顿&#xff…

2025年6月最新SCI-灰熊脂肪增长优化算法Grizzly Bear Fat Increase-附Matlab免费代码

引言 本期介绍一种受自然启发的创新算法——灰熊脂肪增长优化算法Grizzly Bear Fat Increase optimizer&#xff0c;GBFIO。GBFIO算法模仿灰熊为准备过冬而积累身体脂肪的自然行为&#xff0c;借鉴了它们的狩猎、捕鱼、吃草、蜂蜜等策略。于2025年6月发表在JCR 1区&#xff0c…

Pytorch实现一个简单的贝叶斯卷积神经网络模型

贝叶斯深度模型的主要特点和实现说明&#xff1a;模型结构&#xff1a;结合了常规卷积层&#xff08;用于特征提取&#xff09;和贝叶斯线性层&#xff08;用于分类&#xff09;贝叶斯层将权重视为随机变量&#xff0c;而非传统神经网络中的确定值使用变分推断来近似权重的后验…

Dubbo 3.x源码(32)—Dubbo Provider处理服务调用请求源码

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo Provider处理服务调用请求源码 上文我们学习了&#xff0c;Dubbo消息的编码解的源码。现在我们来学习一下Dubbo Provider处理服务调用请求源码。 当前consumer发起了rpc请求&#xff0c;经过请求编码之后到达provider端&#xff0c;…

每日一leetcode:移动零

目录 解题过程: 描述: 分析条件: 解题思路: 通过这道题可以学到什么: 解题过程: 描述: 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操…

6-Django项目实战-[dtoken]-用户登录模块

1.创建应用 python manage.py startapp dtoken 2.注册应用 settings.py中注册 3.匹配路由4.编写登录功能视图函数 import hashlib import json import timeimport jwt from django.conf import settings from django.http import JsonResponse from user.models import UserPro…

Axure日期日历高保真动态交互原型

在数字化产品设计中&#xff0c;日期日历组件作为高频交互元素&#xff0c;其功能完整性与用户体验直接影响着用户对产品的信任度。本次带来的日期日历高保真动态交互原型&#xff0c;依照Element UI、View UI等主流前端框架为参考&#xff0c;通过动态面板、中继器、函数、交互…

【YOLOv4】

YOLOv4 论文地址&#xff1a;&#xff1a;【https://arxiv.org/pdf/2004.10934】 YOLOv4 论文中文翻译地址&#xff1a;【深度学习论文阅读目标检测篇&#xff08;七&#xff09;中文版&#xff1a;YOLOv4《Optimal Speed and Accuracy of Object Detection》-CSDN博客】 yol…

【秋招笔试】2025.08.03虾皮秋招笔试-第一题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 01. 蛋糕切分的最大收益 问题描述 K小姐经营着一家甜品店,今天她有一块长度为 n n n 厘米的长条蛋糕需要切分。根据店里的规定,她必须将蛋糕切成至少 2 2

2.0 vue工程项目的创建

前提准备.需要电脑上已经安装了nodejs 参考 7.nodejs和npm简单使用_npmjs官网-CSDN博客 创建vue2工程 全局安装 Vue CLI 在终端中运行以下命令来全局安装 Vue CLI&#xff1a; npm install -g vue/cli npm install -g 表示全局安装。vue/cli 是 Vue CLI 的包名。 安装完成后…

视觉图像处理中级篇 [2]—— 外观检查 / 伤痕模式的原理与优化设置方法

外观缺陷检测是工业生产中的关键环节&#xff0c;而伤痕模式作为图像处理的核心算法&#xff0c;能精准识别工件表面的划痕、污迹等缺陷。掌握其原理和优化方法&#xff0c;对提升检测效率至关重要。一、利用伤痕模式进行外观检查虽然总称为外观检查&#xff0c;但根据检查对象…