qt反射之类反射、方法反射、字段反射
话不多说,直接上代码:
main.cpp:
#include < QCoreApplication >
#include “fstudent.h”
#include “manage.h”
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//注册类型
qRegisterMetaType(“FStudent”);
Manage manage;
manage.print();return a.exec();
}
反射类头文件:fstudent.h
#ifndef FSTUDENT_H
#define FSTUDENT_H
/*
1、这个类必须直接或间接继承自QObject
2、这个类必须写上Q_OBJECT宏定义
3、需要将类注册到元对象系统中
4、构造函数必须声明可调用
*/
#include
#include
#include
class FStudent : public QObject
{
//元对象系统必须添加 Q_OBJECT 引入元对象
Q_OBJECT
//实现属性m_Name反射,需要下面声明:
Q_PROPERTY(QString m_Name MEMBER m_Name)
public:
//构造函数必须用Q_INVOKABLE 进行修饰,不然该类无法做到反射
Q_INVOKABLE explicit FStudent(QObject *parent=nullptr);
~FStudent();
//该方法如果要做到反射,以下任一一个可以做到
//1、 添加 Q_INVOKABLE修饰
//2、 加slots
//3、加signals
Q_INVOKABLE void print();
public slots:
private:
QString m_Name;
};
Q_DECLARE_METATYPE(FStudent)
#endif // FSTUDENT_H
反射类源文件:fstudent.cpp
#include “fstudent.h”
#include
FStudent::FStudent(QObject *parent):QObject(parent)
{
}
FStudent::~FStudent()
{
}
void FStudent::print()
{
qDebug() << this->m_Name;
}
管理反射类头文件:manage.h
#ifndef MANAGE_H
#define MANAGE_H
#include
#include
class Manage
{
public:
Manage();
QList<QObject*> stu_obj_list;
void print();
};
#endif // MANAGE_H
管理反射类源文件:manage.cpp
#include “manage.h”
#include
#include
#include
#include
#include
#include
Manage::Manage()
{
//QT6.5.3下可用,在qt5.12.10下不可用
const QMetaObject* MetaObject = QMetaType::fromName(“FStudent”).metaObject();
//以下在qt5.12.10下不可用
//int typenumber = QMetaType::type(“FStudent”);
//const QMetaObject* MetaObject = QMetaType::metaObjectForType(typenumber);if(MetaObject == nullptr)
{qDebug() << "get FStudent MetaObject failed!!!";return;
}QStringList stu_name_list;
stu_name_list << "张三" << "李四" <<"王二" <<"赵六";for(auto& stu_name:stu_name_list)
{QObject* stu_obj = MetaObject->newInstance();stu_obj->setProperty("m_Name",QVariant(stu_name));stu_obj_list.push_back(stu_obj);
}
}
void Manage::print()
{
for(auto& stu_obj:stu_obj_list)
{
//通过反射属性来打印信息
qDebug() << stu_obj->property(“m_Name”).toString();
//通过反射方法来打印信息
QMetaObject::invokeMethod(stu_obj,“print”);
}
}
相关文章:
qt反射之类反射、方法反射、字段反射
话不多说,直接上代码: main.cpp: #include < QCoreApplication > #include “fstudent.h” #include “manage.h” int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); //注册类型 qRegisterMetaType(“FStudent”); Manage m…...
服务器数据恢复—raid5阵列离线硬盘强制上线失败如何恢复数据?
服务器数据恢复环境: 某品牌2850服务器上有一组由6块SCSI硬盘组建的raid5磁盘阵列,上层操作系统为Redhat linuxext3文件系统。 服务器故障&初检: 服务器在运行过程中突然瘫痪,管理员对服务器中的raid进行检查后发现有两块硬盘…...
FastAPI+Vue3零基础开发ERP系统项目实战课 20240815上课笔记 列表和字典相关方法的学习和练习
昨日回顾 1、大小写转换2、去除空格3、判断是否为数字4、前缀后缀 昨日练习题进度 练习:判断验证码是否正确 1、生成一个由四个字符组成的验证码字符串,要求有大写有小写,要求左右两边有空格2、打印到控制台3、让用户输入这个验证码&…...
基于微信小程序的诗词智能学习系统的设计与实现(全网独一无二,24年最新定做)
文章目录 前言: 博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为…...
httplib库:用C++11搭建轻量级HTTP服务器
目录 引言 一. httplib库概述 二. httplib核心组件 2.1 数据结构 2.2 类和函数 2.3 服务器搭建 编辑 结语 引言 在现代软件开发中,HTTP服务是网络应用的基础。对于需要快速搭建HTTP服务器或客户端的场景,使用成熟的第三方库可以极大提高开发效…...
基于嵌入式C++、SQLite、MQTT、Modbus和Web技术的工业物联网网关:从边缘计算到云端集成的全栈解决方案设计与实现
一、项目概述 1.1 项目目标与用途 随着工业4.0时代的到来,传统工业设备与现代信息技术的结合越来越紧密。物联网工业网关作为连接工业设备与云端平台的桥梁,在工业自动化、设备监控、远程运维等方面发挥着至关重要的作用。本项目旨在设计并实现一个能够…...
Chapter 38 设计模式
欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能! 文章目录 前言一、单例模式二、工厂模式 前言 在软件开发中,设计模式提供了一种可重用的解决方案,以应对在特定环境中反复出现的问题。这些模式是基于经验总结…...
Redis5主备安装-Redis
本次Redis有两台服务器及3个独立IP:主服务器的ip地址是192.168.31.190,从服务器的IP地址是192.168.31.191,vipIP地址是192.168.31.216 主备方案承载Redis最大的好处是无需考虑Redis崩后无法访问。 前提是需要优先安装keepalived,…...
C++票据查验、票据ocr、文字识别
现在,80、90后的人们逐渐过渡为职场上的主力人员,在工作中当然也会碰到各种各样的问题。比如,当你的老板给你一个艰难的任务时,肯定是不能直接拒绝的。那么我们该怎么做呢?翔云建议您先认真考虑老板说的任务的难度&…...
pytest.ini介绍
1.pytest.ini是什么 ? pytest.ini文件是pytest的主配置文件;pytest.ini文件的位置一般放在项目的根目录下,不能随便放,也不能更改名字。在pytest.ini文件中都是存放的一些配置选项 ,这些选项都可以通过pytest -h查看到…...
Vue项目打包成桌面应用
Vue项目打包成桌面应用 一、使用 NW.js 打包 NW.js基于Chromium和Node.js。它允许您直接从浏览器调用Node.js代码和模块,并在应用程序中使用Web技术。此外,您可以轻松地将web应用程序打包为本机应用程序。 NW官网...
DEFAULT_JOURNAL_IOPRIO
/* * 这些是 CFQ(完全公平排队)实现的 I/O 优先级组。 RT 是实时类,它总是能获得优质服务。 BE 是尽力而为的调度类,是任何进程的默认类别。 IDLE 是空闲调度类,只有在没有其他人使用磁盘时才会被服务。 */ /* *…...
【阿卡迈防护分析】Vueling航空Akamai破盾实战
文章目录 1. 写在前面2. 风控分析3. 破盾实战 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…...
使用AWS Lambda轻松开启Amazon Rekognition之旅
这是本系列文章的第一篇,旨在通过动手实践,帮助大家学习亚马逊云科技的生成式AI相关技能。通过这些文章,大家将掌握如何利用亚马逊云科技的各类服务来应用AI技术。 那么让我们开始今天的内容吧! 介绍 什么是Amazon Rekognition&…...
如何获取VS Code扩展的版本更新信息
获取VS Code 扩展的版本更新的需求 因为企业内部有架设私有扩展管理器的要求,但是对于一些官方市场的插件,希望可以自动获取这些扩展的更新并上传至私有扩展管理器。于是就有了本篇介绍的需求: 通过API的方式获取VS Code 扩展的更新。 关于…...
Python开源项目周排行 2024年第13周
#2024年第13周2024年8月5日1roop一款基于深度学习框架TensorFlow和Keras开发的单图换脸工具包,提供了丰富的功能和简洁易用的界面,使得用户可以轻松实现单图换脸操作。支持多张人脸替换成同一个人脸,勾选多人脸模式即可 人脸替换 高清修复自…...
day04--js的综合案例
1.1 商品全选 需求:商品全选 1. 全选 :点击全选按钮,所有复选框都被选中 2. 全不选 :点击全不选按钮,所有复选框都被取消选中 3. 反选 : 点击反选按钮,所有复选框状态取反 <!DOCTYPE html> <html lang"en">…...
【产品经理】定价策略
年初的时候,尝试自己独立运营了一个美团店铺,最终没有继续做下去了,原因是利润率太低,平台和骑手把利润拿走太多了,根本没有钱赚,烧钱搞流量更是深不见底。 不过也学到了很多东西,比如选品策略…...
webrtc学习笔记3
Nodejs实战 对于我们WebRTC项目而言,nodejs主要是实现信令服务器的功能,客户端和服务器端的交互我们选择websocket作为通信协议,所以以websocket的使用为主。 web客户端 websocket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行…...
Transformer架构;Encoder-Decoder;Padding Mask;Sequence Mask;
目录 Transformer架构 Transformer架构的主要组成部分: 简单举例说明输入和输出: Encoder-Decoder 编码器/解码器组成 6、位置前馈网络(Position-wise Feed-Forward Networks) 7、残差连接和层归一化 10、掩码Mask 10.1 Padding Mask 10.2 Sequence Mask 为什么…...
别再只盯着model.score()了!Python机器学习模型评估的5种实用方法对比
超越model.score():Python机器学习模型评估的五大实战工具 当你的机器学习模型在测试集上表现不佳时,model.score()给出的单一数值往往无法揭示问题的全貌。就像医生不能仅凭体温判断病情一样,数据科学家也需要更丰富的诊断工具来全面评估模型…...
SAC算法实战:用PyTorch实现自动驾驶控制(附完整代码)
SAC算法实战:用PyTorch构建自动驾驶控制系统 在自动驾驶技术快速发展的今天,强化学习已成为解决复杂决策问题的有力工具。而Soft Actor-Critic(SAC)算法凭借其在连续动作空间中的卓越表现,正在成为自动驾驶控制领域的新…...
DeepSeek-V3量化神优化:w4a8精度反超官方2.29%
DeepSeek-V3量化神优化:w4a8精度反超官方2.29% 【免费下载链接】DeepSeek-V3-0324-w4a8-mtp-QuaRot-per-channel 项目地址: https://ai.gitcode.com/Eco-Tech/DeepSeek-V3-0324-w4a8-mtp-QuaRot-per-channel 导语:国内大模型量化技术再获突破&am…...
小程序毕业设计基于微信小程序的校园跑腿小程序
前言 在校园生活节奏紧凑、同学们事务繁忙的当下,Spring Boot 基于微信小程序的校园跑腿小程序应运而生,为师生们提供了便捷高效的代劳服务,让校园生活更加从容有序。借助 Spring Boot 强大的后端支撑以及微信小程序无需安装、触手可及的优势…...
OpenClaw性能优化:降低Qwen3-VL:30B多模态任务的Token消耗
OpenClaw性能优化:降低Qwen3-VL:30B多模态任务的Token消耗 1. 问题背景:多模态任务的高Token消耗困境 上周我在飞书群里测试OpenClaw对接Qwen3-VL:30B模型时,遇到了一个典型问题:当同事上传一张产品设计图要求分析时,…...
跨平台文件同步方案:OpenClaw+Qwen3-32B智能归档系统
跨平台文件同步方案:OpenClawQwen3-32B智能归档系统 1. 为什么需要智能文件同步 作为一个长期在多台设备间切换工作的开发者,我深受文件管理混乱的困扰。Mac上的设计稿、Windows里的开发文档、Linux服务器上的日志文件——这些散落在各处的数据就像一座…...
技术判断力之AI三问
回答老板关于是否投资AI创新项目的三个问题当下AI热度居高不下,企业该如何抉择?是大举投入布局,还是保持观望?我们借以下三个问题来展开思考。一、AI当下处在什么阶段?属于谁的机会?AI技术扩散曲线…...
PROJECT MOGFACE镜像部署详解:针对STM32开发者的AI赋能入门
PROJECT MOGFACE镜像部署详解:针对STM32开发者的AI赋能入门 很多做嵌入式开发的朋友,尤其是玩STM32的,可能都动过接触AI的念头。但一看到那些复杂的Python环境、动辄几十G的模型文件、还有各种依赖冲突,头就大了。心想࿱…...
YOLO X Layout模型测试:基于Pytest的自动化测试框架
YOLO X Layout模型测试:基于Pytest的自动化测试框架 当你辛辛苦苦训练或部署了一个YOLO X Layout模型,准备用它来解析合同、发票或者学术论文时,最怕遇到什么?不是模型本身不够强大,而是某次代码更新后,它…...
YALMIP求解器报错看不懂?从verbose到debug,教你快速定位并解决优化问题
YALMIP求解器报错看不懂?从verbose到debug,教你快速定位并解决优化问题 当你满怀期待地运行YALMIP优化代码,却看到命令行突然跳出一片红色报错信息时,那种挫败感每个优化工程师都深有体会。"No feasible solution found"…...
