Qt Core学习日记——第二天QMetaClassInfo

news2024/11/18 3:44:00

QMetaClassInfo是QMetaObject中用于存放类信息的数据结构

QMetaClassInfo定义:

class Q_CORE_EXPORT QMetaClassInfo

{

public:

Q_DECL_CONSTEXPR inline QMetaClassInfo() : mobj(nullptr), handle(0) {}

const char *name() const;

const char *value() const;

inline const QMetaObject *enclosingMetaObject() const { return mobj; }

private:

const QMetaObject *mobj;

uint handle;

friend struct QMetaObject;

};

产生:

必须在类声明中带有Q_CLASSINFO声明,如

class XTest : public QObject

{

Q_OBJECT

Q_CLASSINFO("author", "Sabrina Schweinsteiger")

public:

XTest(QObject* p = nullptr);

~XTest();

public slots:

void slot1(double * p1);

Q_INVOKABLE void slot2(int * p2);

Q_REVISION(1) void slot3(char * p3);

signals:

void sig1(void * p4);

};

成员变量:

const QMetaObject *mobj指向所属类的QMetaObject

uint handle指向类名字符串的首地址

如moc文件解析一篇中qt_meta_stringdata_XTest是XTest的QMetaObject::d.stringdata属性,XTest中QMetaClassInfo::mobj指向XTest::QMetaObject,QMetaClassInfo::handle值为"XTest"字符串的首地址位置

qt_meta_stringdata_XTest定义如下:

static const qt_meta_stringdata_XTest_t qt_meta_stringdata_XTest = {

{

QT_MOC_LITERAL(0, 0, 5), // "XTest"

QT_MOC_LITERAL(1, 6, 6), // "author"

QT_MOC_LITERAL(2, 13, 22), // "Sabrina Schweinsteiger"

QT_MOC_LITERAL(3, 36, 4), // "sig1"

QT_MOC_LITERAL(4, 41, 0), // ""

QT_MOC_LITERAL(5, 42, 2), // "p4"

QT_MOC_LITERAL(6, 45, 5), // "slot1"

QT_MOC_LITERAL(7, 51, 7), // "double*"

QT_MOC_LITERAL(8, 59, 2), // "p1"

QT_MOC_LITERAL(9, 62, 5), // "slot2"

QT_MOC_LITERAL(10, 68, 4), // "int*"

QT_MOC_LITERAL(11, 73, 2), // "p2"

QT_MOC_LITERAL(12, 76, 5), // "slot3"

QT_MOC_LITERAL(13, 82, 5), // "char*"

QT_MOC_LITERAL(14, 88, 2) // "p3"

},

"XTest\0author\0Sabrina Schweinsteiger\0"

"sig1\0\0p4\0slot1\0double*\0p1\0slot2\0int*\0"

"p2\0slot3\0char*\0p3"

};

主要提供以下函数:

QMetaClassInfo::name

返回classinfo的名称qt_meta_stringdata_XTest中的"author"字段

QMetaClassInfo::value

返回classinfo的值qt_meta_stringdata_XTest中的"Sabrina Schweinsteiger"字段

enclosingMetaObject

返回QMetaObject * QMetaClassInfo::mobj

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

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

相关文章

使用Jetpack Compose中的Pager构建滑动页面

Jetpack Compose是Google为Android开发者提供的一种现代化的UI工具包,它采用声明式UI范式,使得开发者能够更加简洁、直观地构建用户界面。在这篇博客中,我们将探讨如何使用Jetpack Compose中的Pager构建滑动页面。 什么是Pager? …

如何查看Linux是否开启了数据包转发功能

如果Linux主机有多块网卡,如果不开启数据包转发功能,则这些网卡之间是无法互通的。 如何开启数据包转发功能: echo 1 > /proc/sys/net/ipv4/ip_forward sysctl -w net.ipv4.ip_forward1 如何查看是否开启了数据包转发功能: …

Some Strategies for Reducing Write Amplification in LSM-tree

写放大原理 (6 封私信) 如何理解SSD的写放大? - 知乎 (zhihu.com) 日志结构化合并树(LSM 树) LSM 树: 与应用就地更新的传统

直播预约|漫漫用户增长之路,如何快人一手

【导读】 如何实现用户增长及提升用户活跃度是各大开发者关注的重点之一,日常运营过程中,消息推送作为一个触达用户的有效手段,通过恰当的时机和智能的投放模式,可以有效提升消息的曝光度并吸引用户点击,从而实现用户…

​DMBOK知识梳理for CDGA/CDGP——第十章 参考数据与主数据(附常考知识点)

第十章 参考数据与主数据 第十章在CDGA分值占比不高,CDGP分值占比较高,主要考点包括:定义、目标、原则、参考数据及主数据管理好处、异同点、哪些属于主数据、活动、工具、度量指标等基本概念。因此本章建议充分理解参考数据及主数据的基础概…

开放式耳机品牌推荐,热门开放式耳机大盘点!

随着生活的提升,越来越多小伙伴开始使用开放式耳机了,因为开放式耳机不入耳不伤耳的设计,佩戴稳固又舒适,还具有良好的音质和舒适的佩戴体验。下面我来给大家安利几款很不错的开放式耳机,来看看有哪些吧。 一、NANK南…

违反广告法被罚3万元?苹果北京公司又因买卖合同纠纷成被执行人

根据中国执行信息公开网等消息,苹果电子产品商贸(北京)有限公司最近在买卖合同纠纷方面被执行,执行金额为6442元,案件由上海市浦东新区人民法院审理,目前尚未获取到详细纠纷信息。 近日,苹果公司…

一个月学通Python(十二):Python发送电子邮件及图像办公文档处理

专栏介绍 结合自身经验和内部资料总结的Python教程,每天3章,1个月就能全方位的完成Python的学习并进行实战开发。加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础》 文章目录 专栏介绍网络应用…

在 Jetpack Compose 中使用 BottomAppBar

简介 Jetpack Compose 是一个现代化的、声明式的 UI 工具包,它使我们能够更方便地构建 Android 的用户界面。本篇文章将介绍如何在 Jetpack Compose 中使用 BottomAppBar 来创建底部应用栏。 什么是 BottomAppBar? BottomAppBar 是一个在屏幕底部的应用栏&#x…

学习笔记——vscode界面设置界面缩放级别

使用vscode时,不知道按了什么快捷键,vscode窗口缩放了。 调整方法:设置 > 窗口(window) > Zoom Level

第一百零一天学习记录:C++核心:类和对象Ⅵ(五星重要)继承上

继承 继承是面向对象三大特性之一 继承的基本语法 普通写法&#xff1a; #include <iostream> using namespace std;//普通实现页面//Java页面 class Java { public:void header(){cout << "首页、公开课、登录、注册……&#xff08;公共头部&#xff09…

电子森林STEP-MXO2_1 入门部分全部实验

前言 本部分实验基于电子森林小脚丫开发板的数电入门教程实验。实验链接&#xff1a;step-mxo2入门教程 电子森林] (eetree.cn) 其中代码是博主学习后根据自己思路自己敲的&#xff0c;并非直接复制&#xff0c;且仅供学习交流使用&#xff0c;侵删。 lattice 环境配置在此不…

【解压缩技巧】2种方法合并ZIP分卷压缩文件

文件太大的时候&#xff0c;很多人都会选择“分卷压缩”来压缩ZIP文件&#xff0c;那分卷后的ZIP文件要怎么合并回去呢&#xff1f;今天小编就来分享2个合并方法&#xff0c;下面一起看看吧。 方法一&#xff1a; 使用7-Zip压缩软件的自带“合并文件”功能。 首先打开7-Zip&a…

Mac下pom.xml文件中找不到env.JAVA_HOME

Mac 11.7.6 这个是解决后的样子&#xff0c;解决前是env.JAVA_HOME找不到 上图中的${env.JAVA_HOME}中的env是用来获取系统环境变量&#xff0c;但是在mac10以上的版本,即使我们在bash_profile文件中配置了JAVA_HOME&#xff0c;这里也不能直接使用env将JAVA_HOME点出来&#…

解决报错:“export ‘default‘ (imported as ‘VueRouter‘) was not found in ‘vue-router‘

目录 ❓ 问题描述 ❌ 报错信息 ⁉️ 问题原因&#xff1a; &#x1f388; 解决办法&#xff08;仅windows&#xff09;: 如何查看所装依赖的版本号 如何下载或卸载已有依赖版本 说说一些兼容性问题 &#x1f4da; 参考资料&#xff1a; ❓ 问题描述 用npm run serve运…

metersphere主从节点部署

metersphere主从节点关系 环境搭建 docker 环境准备 检查内存是否大于8G free -m 安装docker服务 安装docker&#xff0c;使用yum -y install docker&#xff1b; 启动docker&#xff0c;使用systemctl start docker&#xff1b; 设置开机启动&#xff0c;使用systemctl en…

Web3与物联网行业:实现安全、可信与智能的连接

随着物联网技术的快速发展&#xff0c;我们正迎来一个高度互联、智能化的未来。而Web3作为互联网的下一次演进&#xff0c;将为物联网行业带来重要的变革。 本文将探讨Web3在物联网行业中的应用前景和优势&#xff0c;以及如何实现安全、可信和智能的连接。 第一部分&#xff…

亚马逊哪些因素影响下单成功率

在亚马逊上下单时&#xff0c;下列因素可能影响下单的成功率&#xff1a; 1、账户信息准确性&#xff1a;确保您的亚马逊账户信息是准确的&#xff0c;包括配送地址、付款方式和联系方式等。错误或过期的信息可能导致下单失败。 2、库存和供应情况&#xff1a;某些商品可能由…

业财一体化与数据集成平台:实现数字化转型的关键利器

业财一体化一直是企业信息化领域的热门话题&#xff0c;而随着ERP技术的升级和发展&#xff0c;数据集成平台如轻易云正逐渐崭露头角。本文探讨了不同的业财一体化架构模式&#xff0c;并重点介绍了轻易云数据集成平台的强大集成优势。该平台通过一站式的服务&#xff0c;包括数…

linux 下如何安装 tar.gz包

linux 下如何安装 tar.gz包 解压缩进入解压后的文件目录下 解压缩 tar -zxvf pycharm-community-2023.1.3.tar.gz进入解压后的文件目录下 ./pycharm.sh可执行Pycharm 建议将目录转移到其他位置 我习惯使用2020版本的 下载地址