Qt-Q_ENUM宏和QMetaEnum类

Q_ENUM是一个宏定义,它的作用是将一个枚举类型注册到元对象系统,从而能够通过QMetaEnum类获得一些关于enum类型的一些信息,例如获取enum类型的名称字符串,enum值和字符串互相转换,enum类型保存在QVariant中,enum值的个数,qDebug()打印enum值名称等等。
用法:在一个继承于QObject的子类中声明enum,然后在定义后面使用Q_ENUM宏注册enum类型。如下:

class MyClass : public QObject
{Q_OBJECTpublic:MyClass(QObject *parent = nullptr);~MyClass();enum Priority { High, Low, VeryHigh, VeryLow };Q_ENUM(Priority)void setPriority(Priority priority);Priority priority() const;
};

随后通过QMetaEnum获取enum类型的相关信息。

QMetaEnum metaEnum = QMetaEnum::fromType<MyClass ::Priority >();
qDebug() << metaEnum.enumName();  // Priority
qDebug() << metaEnum.keyCount();  // 4
QString s = metaEnum.valueToKey(MyClass::Priority::Low;  // Low
int p = metaEnum.keyToValue(s);  // 1
MyClass::Priority e = (MyClass::Priority)p;
qDebug() << e; // 打印MyClass::Low而不是1
QVariant v = QVariant::fromValue(e);  // 保存在QVariant中

使用Q_ENUM声明的枚举类型已经在元对象系统中注册,不再需要使用Q_DELCARE_METATYPE。

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

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

相关文章

MongoDB 配合python使用的入门教程

MongoDB 入门教程 1. 安装 MongoDB 首先&#xff0c;你需要在你的机器上安装MongoDB。你可以从 MongoDB官网 下载并安装 Community 版本。安装完成后&#xff0c;启动MongoDB服务。 # 在Linux/Mac上启动MongoDB mongod# 在Windows上&#xff0c;你可以通过Windows服务启动Mo…

【云馨AI-大模型】大模型的开发和应用中,Python、PyTorch和vLLM关系概括

说明 1. Python 定位&#xff1a;基础编程语言。作用&#xff1a;Python 是大模型生态系统的核心语言&#xff0c;几乎所有深度学习框架&#xff08;如 PyTorch、TensorFlow&#xff09;和工具链&#xff08;如 vLLM&#xff09;都通过 Python 接口提供服务。特点&#xff1a…

西门子200smart之modbus_TCP(做主站与第三方设备)通讯

西门子200smart做MODBUS_TCP主站通讯,只有一个指令。设置相关参数即可完成读写操作。整 个过程非常复杂,操作非常严谨。此次,我们使用汇川EASY系列PLC做从站,完成演示。关于汇川案例的演示,详见汇川EASY系列之以太网通讯(MODBUS_TCP做从站)-CSDN博客 关于主站和从站的介…

缓存设计模式

缓存设计模式&#xff08;Cache Design Pattern&#xff09;是一种用于存储和管理频繁访问数据的技术&#xff0c;旨在提高系统性能、降低数据库或后端服务的负载&#xff0c;并减少数据访问延迟。以下是几种常见的缓存设计模式&#xff0c;并用 Python Redis 进行示例代码实现…

Java算法队列和栈经常用到的ArrayDeque

主要是记录一下add&#xff0c;push&#xff0c;poll这三个常用api&#xff0c;因为这三个就是栈和队列一念之差的关键 1.add(E e) 方法 ​作用&#xff1a;将元素添加到双端队列的尾部​&#xff08;等价于 addLast(E e)&#xff09;。​行为&#xff1a; ​成功时&#xff1…

机器学习——一元线性回归(算法实现与评估)

一元线性回归是统计学中最基础的回归分析方法&#xff0c;用于建立两个变量之间的线性关系模型。 1. 模型表达式 一元线性回归的数学模型为&#xff1a; &#xff1a;因变量&#xff08;预测值&#xff09;&#xff1a;自变量&#xff08;输入变量&#xff09;&#xff1a;回…

Ubuntu下用QEMU模拟运行OpenBMC

1、前言 在调试过程中&#xff0c;安装了很多依赖库&#xff0c;具体没有记录。关于kvm&#xff0c;也没理清具体有什么作用。本文仅记录&#xff0c;用QEMU成功的将OpenBMC跑起来的过程&#xff0c;做备忘&#xff0c;也供大家参考。 2、环境信息 VMware Workstation 15 Pro…

Gradle/Maven 本地仓库默认路径迁移 (减少系统磁盘占用)

Gradle 配置环境变量 GRADLE_USER_HOME&#xff0c;如D:/.gradle同时将 %userprofile%/.gradle 移动到配置路径 Maven 修改settings.xml文件&#xff0c;localRepository同时将 %userprofile%/.m2/repository 移动到配置路径 IDEA默认用的bundle maven, 路径为安装目录下 p…

MinGW与使用VScode写C语言适配

压缩包 通过网盘分享的文件&#xff1a;MinGW.zip 链接: https://pan.baidu.com/s/1QB-Zkuk2lCIZuVSHc-5T6A 提取码: 2c2q 需要下载的插件 1.翻译 找到VScode页面&#xff0c;从上数第4个&#xff0c;点击扩展&#xff08;以下通此&#xff09; 搜索---Chinese--点击---安装--o…

【C++初阶】从零开始模拟实现vector(含迭代器失效详细讲解)

目录 1、基本结构 1.1成员变量 1.2无参构造函数 1.3有参构造函数 preserve()的实现 代码部分&#xff1a; push_back()的实现 代码部分&#xff1a; 代码部分&#xff1a; 1.4拷贝构造函数 代码部分&#xff1a; 1.5支持{}初始化的构造函数 代码部分&#xff1a; …

Java实习生面试题(2025.3.23 be)

一、v-if与v-show的区别 v-show 和 v-if 都是 Vue 中的条件渲染指令&#xff0c;它们的主要区别在于渲染策略&#xff1a;v-if 会根据条件决定是否编译元素&#xff0c;而 v-show 则始终编译元素&#xff0c;只是通过改变 CSS 的 display 属性来控制显示与隐藏。 二、mybatis-…

stm32标准库开发需要的基本文件结构

使用STM32标准库&#xff08;STM32 Standard Peripheral Library&#xff0c;SPL&#xff09;开发时&#xff0c;项目中必须包含一些必要的文件&#xff0c;这些文件确保项目能够正常运行并与MCU硬件交互。以下详细说明&#xff1a; 一、标准库核心文件夹说明 使用标准库开发S…

学生管理系统(需求文档)

需求&#xff1a; 采取控制台的方式去书写学生管理系统 分析&#xff1a; 初始菜单&#xff1a; “----------欢迎来到java学生管理系统----------” “1:添加学生” “2&#xff1a;删除学生” “3&#xff1a;修改学生” “4&#xff1a;查询学生” “5&#xff1a;…

Java算法OJ(13)双指针

目录 1.前言 2.正文 2.1快乐数 2.2盛最多水的容器 2.3有效的三角形的个数 2.4和为s的两个数 2.5三数之和 2.6四数之和 3.小结 1.前言 哈喽大家好吖&#xff0c;今天继续加练算法题目&#xff0c;一共六道双指针&#xff0c;希望能对大家有所帮助&#xff0c;废话不多…

SpringBoot分布式定时任务实战:告别重复执行的烦恼

场景再现&#xff1a;你刚部署完基于SpringBoot的集群服务&#xff0c;凌晨3点突然收到监控告警——优惠券发放量超出预算两倍&#xff01;检查日志发现&#xff0c;两个节点同时执行了定时任务。这种分布式环境下的定时任务难题&#xff0c;该如何彻底解决&#xff1f; 本文将…

MySQL 设置允许远程连接完整指南:安全与效率并重

一、为什么需要远程连接MySQL&#xff1f; 在分布式系统架构中&#xff0c;应用程序与数据库往往部署在不同服务器。例如&#xff1a; Web服务器&#xff08;如NginxPHP&#xff09;需要连接独立的MySQL数据库数据分析师通过BI工具直连生产库多服务器集群间的数据同步 但直接…

系统架构书单推荐(一)领域驱动设计与面向对象

本文主要是个人在学习过程中所涉猎的一些经典书籍&#xff0c;有些已经阅读完&#xff0c;有些还在阅读中。于我而言&#xff0c;希望追求软件系统设计相关的原则、方法、思想、本质的东西&#xff0c;并希望通过不断的学习、实践和积累&#xff0c;提升自身的知识和认知。希望…

动态规划-01背包

兜兜转转了半天&#xff0c;发现还是Carl写的好。 看过动态规划-基础的读者&#xff0c;大概都清楚。 动态规划是将大问题&#xff0c;分解成子问题。并将子问题的解储存下来&#xff0c;避免重复计算。 而背包问题&#xff0c;就是动态规划延申出来的一个大类。 而01背包&…

使用VS2022编译CEF

前提 选择编译的版本 CEF自动编译&#xff0c;在这里可以看到最新的稳定版和Beta版。 从这里得出&#xff0c;最新的稳定版是134.0.6998.118&#xff0c;对应的cef branch是6998。通过这个信息可以在Build requirements查到相关的软件配置信息。 这里主要看Windows下的编译要…

C++20:玩转 string 的 starts_with 和 ends_with

文章目录 一、背景与动机二、string::starts_with 和 string::ends_with&#xff08;一&#xff09;语法与功能&#xff08;二&#xff09;使用示例1\. 判断字符串开头2\. 判断字符串结尾 &#xff08;三&#xff09;优势 三、string_view::starts_with 和 string_view::ends_w…