当前位置: 首页 > news >正文

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 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…...

微软Edge浏览器多用户配置文件管理:个性化浏览体验

在家庭或工作环境中&#xff0c;经常需要在同一台计算机上为多个用户创建和管理独立的浏览体验。微软Edge浏览器提供了多用户配置文件管理功能&#xff0c;允许用户为每个账户设置独立的书签、历史记录、密码、扩展和设置。本文将详细介绍如何在微软Edge中管理多个用户配置文件…...

10.2 JavaEE——Spring MVC入门程序

要求在浏览器发起请求&#xff0c;由Spring MVC接收请求并响应&#xff0c;具体实现步骤如下。 一、创建项目 在IDEA中&#xff0c;创建一个名称为chapter10的Maven Web项目。 &#xff08;一&#xff09;手动设置webapp文件夹 1、单击IDEA工具栏中的File→“Project Structu…...

Python 处理大量数据的相关库和框架推荐

Python 处理大量数据的相关库和框架推荐 Python 生态系统中存在多个强大的库和框架&#xff0c;它们可以帮助开发者高效地处理大量数据。以下是一些广泛使用的推荐选项&#xff1a; 1. NumPy 一个用于大规模数值计算的科学计算库。提供多维数组对象和相应的操作。 2. Panda…...

【unity笔记】七、Mirror插件使用

一、简介 Mirror 是一个用于 Unity 的开源多人游戏网络框架&#xff0c;它提供了一套简单高效的网络同步机制&#xff0c;特别适用于中小型多人游戏的开发。以下是 Mirror 插件的一些关键特点和组件介绍&#xff1a; 简单高效&#xff1a;Mirror 以其简洁的 API 和高效的网络…...

掌握SEO:如何优化用ChatGPT生成的文章以提升搜索排名

在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为网站流量的重要来源。随着人工智能技术的进步&#xff0c;越来越多的人开始使用ChatGPT等AI工具来生成文章。然而&#xff0c;虽然这些工具可以快速生成内容&#xff0c;但要确保这些内容在搜索引擎中…...

Java面试问题(一)

一.Java语言具有的哪些特点 1.Java是纯面向对象语言&#xff0c;能够直接反应现实生活中的对象 2.具有平台无关性&#xff0c;利用Java虚拟机运行字节码文件&#xff0c;无论是在window、Linux还是macOS等其他平台对Java程序进行编译&#xff0c;编译后的程序可在其他平台上运行…...

Firewalld防火墙基础

Firewalld 支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具 支持IPv4、IPv6防火墙设置以及以太网桥 支持服务或应用程序直接添加防火墙规则接口 拥有两种配置模式 运行时配置&#xff1a;临时生效&#xff0c;一旦重启或者重载即不生效 永久配置&#xff1a…...

解决Java中多线程同步问题的方案

解决Java中多线程同步问题的方案 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java开发中&#xff0c;多线程同步问题是我们经常面对的挑战之一。正确处理…...

每日一练 - RSTP与STP收敛速度对比

01 真题题目 RSTP 收敛速度比 STP 要快,以下说法正确的是&#xff1f; A. 在 RSTP 中检测拓扑是发生变化只有一个标准.一个非边缘端口迁移到 Forwarding 状态 B. 在 STP 中,为了避免临时环路,至少要等待一个 Forwarding Delay 待全网端口确定,所有端口才能进行转发 C. P/A …...

ZS-20H型水泥胶砂振实台

一、 概述 水泥胶砂振实台是为我国水泥胶砂强度检验方法等同采ISO679国际标准而设计。该仪器符合 JC/T 682《水泥胶砂试体成型振实台》要求&#xff0c;适用于水泥强度检验所用试样的制备。 二、 技术数据 1、台盘&#xff08;包括臂杆、压模框等&#xff09;的总质量 13.75 …...

力扣377 组合总和Ⅳ Java版本

文章目录 题目描述代码 题目描述 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3], targe…...

昇思25天学习打卡营第3天 | 数据集 Dataset

数据是深度学习的基础&#xff0c;高质量的数据输入将在整个深度神经网络中起到积极作用。MindSpore提供基于Pipeline的数据引擎&#xff0c;通过数据集&#xff08;Dataset&#xff09;和数据变换&#xff08;Transforms&#xff09;实现高效的数据预处理。其中Dataset是Pipel…...

交换机三层架构及对流量的转发机制

交换机的作用&#xff1a; 区别集线器(HUB)&#xff1b; HUB 为物理层设备&#xff0c;只能直接转发电流 交换机为数据链路层设备&#xff0c;可以将电流与二进制转换&#xff0c;实现了以下功能&#xff1a; 无限的传输距离 彻底解决了冲突-所有的接口可以同时收发数据 二…...

开发者配置项、开发者选项自定义

devOptions.vue源码 <!-- 开发者选项 &#xff08;CtrlAltShiftD&#xff09;--> <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&#xff1f;2. IndexOutOfBoundsException的常见触发场景3. 示例代码 二、解决方案1. 检查索引范围2. 使用增强型for循环3. 使用ListIterator进行遍历4. 使用线程安全的集合 三、最…...

C++编程(三)面向对象

文章目录 一、概念二、类的定义&#xff08;一&#xff09;声明一个类类型的语法格式&#xff1a;&#xff08;二&#xff09;类中的访问控制权限&#xff08;三&#xff09;实例化对象1. 栈区对象2. 堆区对象 &#xff08;四&#xff09;类内声明类外实现&#xff08;五&#…...

Batch入门教程

Batch学习在多个领域有不同的应用&#xff0c;但最常见的是在机器学习和教育学习领域。以下是一个关于Batch学习入门的清晰指南&#xff0c;将分别介绍这两个领域中的Batch学习概念、方法和一些实用信息。 1. 机器学习中的Batch学习 定义与概念 Batch_Size&#xff1a;在机器…...

49-2 内网渗透 - 使用UACME Bypass UAC

靶场准备: 1. 使用已有的 Windows 2012 虚拟机 确保你的虚拟机正在运行,并且可以正常访问。2. 添加 test 用户到管理员组(如上篇文件添加过了就跳过这一步) 具体命令如下: net localgroup administrators test /add 3. 切换用户登录 注销当前会话,并使用 test 用户登录。…...

科研人必备:用浏览器插件给IEEEXplore做个‘小手术’,告别20秒加载

科研效率革命&#xff1a;用浏览器插件精准优化IEEEXplore访问体验 每次打开IEEEXplore文献库&#xff0c;那个转不停的加载图标是否让你焦躁不安&#xff1f;作为每天要与学术数据库打交道的科研工作者&#xff0c;20秒的等待时间足以打断思考流&#xff0c;降低工作效率。这背…...

Linux配置静态ip地址和Oracle VM VirtualBox导入/导出虚拟机Centos7

导入虚拟机选择管理 - 导入虚拟电脑找到自己的虚拟机位置修改内存大小&#xff0c;默认虚拟机电脑位置&#xff0c;MAC地址等导入后点击设置如下图&#xff1a;修改网络-网 -- 卡1&#xff0c;其他基本不需要修改桥接网络选好网卡接入网线&#xff1b;设置好网络以后使用命令重…...

DynamicColor跨平台开发指南:iOS、macOS、watchOS的统一颜色解决方案

DynamicColor跨平台开发指南&#xff1a;iOS、macOS、watchOS的统一颜色解决方案 【免费下载链接】DynamicColor Yet another extension to manipulate colors easily in Swift and SwiftUI 项目地址: https://gitcode.com/gh_mirrors/dy/DynamicColor DynamicColor是一…...

IDEA插件开发:集成Nunchaku-flux-1-dev实现代码注释自动图解

IDEA插件开发&#xff1a;集成Nunchaku-flux-1-dev实现代码注释自动图解 1. 引言 作为一名Java开发者&#xff0c;你是否曾经面对过这样的困境&#xff1a;接手一个复杂的遗留系统&#xff0c;代码量庞大但注释稀少&#xff0c;逻辑关系错综复杂&#xff0c;光是理解代码执行…...

Java结构化并发崩溃了?手把手教你用VirtualThread+StructuredTaskScope定位线程泄漏与作用域越界(附JDK21真机调试录屏)

第一章&#xff1a;Java结构化并发崩溃了&#xff1f;手把手教你用VirtualThreadStructuredTaskScope定位线程泄漏与作用域越界&#xff08;附JDK21真机调试录屏&#xff09;Java 21 正式引入结构化并发&#xff08;Structured Concurrency&#xff09;&#xff0c;其核心组件 …...

Easypoi导出Excel时,如何优雅地处理‘未知’或‘空值’?一个replace动态替换的实战技巧

Easypoi动态替换Excel导出中的未知值与空值&#xff1a;实战技巧与最佳实践 在数据导出场景中&#xff0c;我们经常遇到数据库枚举值与Excel展示不匹配的问题。比如性别字段&#xff0c;除了标准的"男"、"女"外&#xff0c;还可能存在空值或超出预设范围的…...

5分钟掌握Goldberg模拟器:告别Steam限制,畅玩单机游戏

5分钟掌握Goldberg模拟器&#xff1a;告别Steam限制&#xff0c;畅玩单机游戏 【免费下载链接】gbe_fork Fork of https://gitlab.com/Mr_Goldberg/goldberg_emulator 项目地址: https://gitcode.com/gh_mirrors/gbe/gbe_fork 你是否厌倦了Steam平台的网络限制&#xff…...

DOL-CHS-MODS:开源工具助力游戏体验一键优化

DOL-CHS-MODS&#xff1a;开源工具助力游戏体验一键优化 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 您是否在为游戏汉化过程中的繁琐配置而头疼&#xff1f;是否曾因美化补丁安装不当导致游戏崩…...

像素风AI工具体验:像素史诗智识终端,让研究变得有趣又高效

像素风AI工具体验&#xff1a;像素史诗智识终端&#xff0c;让研究变得有趣又高效 1. 引言&#xff1a;当科研遇上像素冒险 想象一下&#xff1a;你是一位勇者&#xff0c;站在像素风格的城堡前&#xff0c;准备开始一场史诗般的冒险。但这次&#xff0c;你的武器不是剑与盾&…...

XPath与lxml解析库

test.xml<?xml version"1.0" encoding"utf-8"?><bookstore><book name"halibote"><title lang"en">Harry Potter</title><author>J K. Rowling</author><year>2005</year>&l…...