qt中的枚举值-QMetaEnum
QMetaEnum
- 测试代码
- h
- cpp
- 讲解
测试代码
h
#include <QMainWindow>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();public://枚举值测试enum BtnEnum {pushButton,pushButton_2,pushButton_3,pushButton_4,pushButton_5,pushButton_6,pushButton_7,BTN_COUNT //btn就是按钮的缩写,count就是总数};Q_ENUM(BtnEnum)
public:void someFunction();
public slots:void slot_btn_clicked();void Print(int btnType);
private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QMetaEnum>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->pushButton,&QPushButton::clicked,this,slot_btn_clicked);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::someFunction()
{//获取BtnEnum这个枚举变量,我们赋值给metaEnumQMetaEnum metaEnum = QMetaEnum::fromType<MainWindow::BtnEnum>();// 获取枚举的名称和值for (int i = 0; i < metaEnum.keyCount(); ++i) {const char *key = metaEnum.key(i);int value = metaEnum.value(i);qDebug() << "Key:" << key << "Value:" << value;//key和value都有了}// 根据名称获取枚举值int btnViewValue = metaEnum.keyToValue("pushButton");//根据pushButton这个名称获取对应的值(索引)qDebug() << "pushButton value:" << btnViewValue;// 根据值获取枚举名称const char *btnStopKey = metaEnum.valueToKey(MainWindow::pushButton_7);//根据枚举值获得名称(这个没啥用啊)qDebug() << "pushButton_7 key:" << btnStopKey;
}void MainWindow::slot_btn_clicked()
{QPushButton *btn = (QPushButton*)sender();//可以在槽函数中使用sender函数,知道是哪个按钮触发了这个槽函数QString objectName = btn->objectName();//获取这个变量的名称QMetaEnum metaEnum = QMetaEnum::fromType<MainWindow::BtnEnum>();int btnType = metaEnum.keyToValue(objectName.toLocal8Bit());if(btnType>= pushButton && btnType <BTN_COUNT)//BtnEnum 枚举变量的第一枚举值是pushButton,最后一个枚举值是BTN_COUNT{Print(btnType);}
}void MainWindow::Print(int btnType)
{QMetaEnum metaEnum = QMetaEnum::fromType<MainWindow::BtnEnum>();qDebug()<<metaEnum.key(btnType)<<"被调用了";
}
讲解
- QMetaEnum metaEnum = QMetaEnum::fromTypeMainWindow::BtnEnum();
可以获取qt中的枚举对象 - key(i),value(i)qt中的枚举对象分别可以使用key和value获取对应的枚举名称和枚举索引
相关文章:
qt中的枚举值-QMetaEnum
QMetaEnum 测试代码hcpp 讲解 测试代码 h #include <QMainWindow> #include <QDebug>QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~M…...
这才是CSDN最系统的网络安全学习路线(建议收藏)
01 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面…...
微软Edge浏览器多用户配置文件管理:个性化浏览体验
在家庭或工作环境中,经常需要在同一台计算机上为多个用户创建和管理独立的浏览体验。微软Edge浏览器提供了多用户配置文件管理功能,允许用户为每个账户设置独立的书签、历史记录、密码、扩展和设置。本文将详细介绍如何在微软Edge中管理多个用户配置文件…...
10.2 JavaEE——Spring MVC入门程序
要求在浏览器发起请求,由Spring MVC接收请求并响应,具体实现步骤如下。 一、创建项目 在IDEA中,创建一个名称为chapter10的Maven Web项目。 (一)手动设置webapp文件夹 1、单击IDEA工具栏中的File→“Project Structu…...
Python 处理大量数据的相关库和框架推荐
Python 处理大量数据的相关库和框架推荐 Python 生态系统中存在多个强大的库和框架,它们可以帮助开发者高效地处理大量数据。以下是一些广泛使用的推荐选项: 1. NumPy 一个用于大规模数值计算的科学计算库。提供多维数组对象和相应的操作。 2. Panda…...
【unity笔记】七、Mirror插件使用
一、简介 Mirror 是一个用于 Unity 的开源多人游戏网络框架,它提供了一套简单高效的网络同步机制,特别适用于中小型多人游戏的开发。以下是 Mirror 插件的一些关键特点和组件介绍: 简单高效:Mirror 以其简洁的 API 和高效的网络…...
掌握SEO:如何优化用ChatGPT生成的文章以提升搜索排名
在数字化时代,搜索引擎优化(SEO)已经成为网站流量的重要来源。随着人工智能技术的进步,越来越多的人开始使用ChatGPT等AI工具来生成文章。然而,虽然这些工具可以快速生成内容,但要确保这些内容在搜索引擎中…...
Java面试问题(一)
一.Java语言具有的哪些特点 1.Java是纯面向对象语言,能够直接反应现实生活中的对象 2.具有平台无关性,利用Java虚拟机运行字节码文件,无论是在window、Linux还是macOS等其他平台对Java程序进行编译,编译后的程序可在其他平台上运行…...
Firewalld防火墙基础
Firewalld 支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具 支持IPv4、IPv6防火墙设置以及以太网桥 支持服务或应用程序直接添加防火墙规则接口 拥有两种配置模式 运行时配置:临时生效,一旦重启或者重载即不生效 永久配置:…...
解决Java中多线程同步问题的方案
解决Java中多线程同步问题的方案 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Java开发中,多线程同步问题是我们经常面对的挑战之一。正确处理…...
每日一练 - RSTP与STP收敛速度对比
01 真题题目 RSTP 收敛速度比 STP 要快,以下说法正确的是? A. 在 RSTP 中检测拓扑是发生变化只有一个标准.一个非边缘端口迁移到 Forwarding 状态 B. 在 STP 中,为了避免临时环路,至少要等待一个 Forwarding Delay 待全网端口确定,所有端口才能进行转发 C. P/A …...
ZS-20H型水泥胶砂振实台
一、 概述 水泥胶砂振实台是为我国水泥胶砂强度检验方法等同采ISO679国际标准而设计。该仪器符合 JC/T 682《水泥胶砂试体成型振实台》要求,适用于水泥强度检验所用试样的制备。 二、 技术数据 1、台盘(包括臂杆、压模框等)的总质量 13.75 …...
力扣377 组合总和Ⅳ Java版本
文章目录 题目描述代码 题目描述 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1: 输入:nums [1,2,3], targe…...
昇思25天学习打卡营第3天 | 数据集 Dataset
数据是深度学习的基础,高质量的数据输入将在整个深度神经网络中起到积极作用。MindSpore提供基于Pipeline的数据引擎,通过数据集(Dataset)和数据变换(Transforms)实现高效的数据预处理。其中Dataset是Pipel…...
交换机三层架构及对流量的转发机制
交换机的作用: 区别集线器(HUB); HUB 为物理层设备,只能直接转发电流 交换机为数据链路层设备,可以将电流与二进制转换,实现了以下功能: 无限的传输距离 彻底解决了冲突-所有的接口可以同时收发数据 二…...
开发者配置项、开发者选项自定义
devOptions.vue源码 <!-- 开发者选项 (CtrlAltShiftD)--> <template><div :class"$options.name" v-if"visible"><el-dialog:custom-class"sg-el-dialog":append-to-body"true":close-on…...
【Java】解决Java报错:IndexOutOfBoundsException in Collections
文章目录 引言一、IndexOutOfBoundsException的定义与概述1. 什么是IndexOutOfBoundsException?2. IndexOutOfBoundsException的常见触发场景3. 示例代码 二、解决方案1. 检查索引范围2. 使用增强型for循环3. 使用ListIterator进行遍历4. 使用线程安全的集合 三、最…...
C++编程(三)面向对象
文章目录 一、概念二、类的定义(一)声明一个类类型的语法格式:(二)类中的访问控制权限(三)实例化对象1. 栈区对象2. 堆区对象 (四)类内声明类外实现(五&#…...
Batch入门教程
Batch学习在多个领域有不同的应用,但最常见的是在机器学习和教育学习领域。以下是一个关于Batch学习入门的清晰指南,将分别介绍这两个领域中的Batch学习概念、方法和一些实用信息。 1. 机器学习中的Batch学习 定义与概念 Batch_Size:在机器…...
49-2 内网渗透 - 使用UACME Bypass UAC
靶场准备: 1. 使用已有的 Windows 2012 虚拟机 确保你的虚拟机正在运行,并且可以正常访问。2. 添加 test 用户到管理员组(如上篇文件添加过了就跳过这一步) 具体命令如下: net localgroup administrators test /add 3. 切换用户登录 注销当前会话,并使用 test 用户登录。…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
