Qt Core学习日记——第九天QObjectData

news2024/11/23 2:38:26

本文结合示例代码更易理解,moc_XTest.cpp文件是写好XTest.h、XTest.cpp后由qt编译生成

版本

Qt5.15.2

示例代码

XTest.h

#pragma once

#include <qobject.h>

#include <QFlags>

class XTest : public QObject

{

Q_OBJECT

Q_CLASSINFO("author", "Sabrina Schweinsteiger")

Q_PROPERTY(bool autoStartup READ autoStartup WRITE setAutoStartup NOTIFY sigAutoStartup)

public:

XTest(QObject* p = nullptr) {}

~XTest() {}

public:

enum Priority

{

High,

Low,

VeryHigh,

VeryLow

};

Q_ENUM(Priority)

enum PriorityFlag

{

High1,

Low1,

VeryHigh1,

VeryLow1

};

Q_FLAG(PriorityFlag)

Q_DECLARE_FLAGS(Alignment, PriorityFlag)

Q_FLAG(Alignment)

public:

bool autoStartup() { return m_autoStartup; }

void setAutoStartup(bool b) { m_autoStartup = b; emit sigAutoStartup(); }

public slots:

void slot1(double* p1) {}

Q_INVOKABLE void slot2(int* p2) {}

Q_REVISION(1) void slot3(char* p3) {}

Q_INVOKABLE void slot4(int p2, double) {}

signals:

void sig1(void * p4);

void sigAutoStartup();

private:

Q_REVISION(1) bool m_autoStartup = false;

};

XTest.cpp:

#include "XTest.h"

成员变量

QObject中成员变量就2个

d_ptr是一个指向QObjectData的指针。

QObjectData定义如下:

q_ptr

指向自己的指针,例如XTest对象的q_ptr指向XTest对象,QObject对象的q_ptr指向QObject对象

parent

指向父节点的指针

例如

parent就是指向app的指针

children

子节点列表

例如

app的children包含p

isWidget

是否为控件类

控件类默认true,其它类默认false

例如QWidget的isWidget为true

blockSig

是否阻止信号发出,默认false

wasDeleted

当前对象是否被删除,默认false

isDeletingChildren

是否正在删除子节点,默认false

sendChildEvents

是否向父节点发送ChildAdded和ChildRemoved事件,默认true

receiveChildEvents

是否接受子节点发送的ChildAdded和ChildRemoved事件,默认true

isWindow

是否为窗口类

deleteLaterCalled

是否删除延迟事件,默认false

unused

标识

postedEvents

默认为0

metaObject

默认为空

函数

dynamicMetaObject

由metaObject的toDynamicMetaObject实现,而toDynamicMetaObject又是纯虚函数,所以由metaObject指向的QDynamicMetaObjectData子类对象实现。

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

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

相关文章

【JavaEE初阶】HTTP请求的构造及HTTPS

文章目录 1.HTTP请求的构造1.1 from表单请求构造1.2 ajax构造HTTP请求1.3 Postman的使用 2. HTTPS2.1 什么是HTTPS?2.2 HTTPS中的加密机制(SSL/TLS)2.2.1 HTTP的安全问题2.2.2 对称加密2.2.3 非对称加密2.2.3 中间人问题2.2.5 证书 1.HTTP请求的构造 常见的构造HTTP 请求的方…

数组(超详解)

数组 1.一维数组1.1 一维数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的储存 2. 二维数组2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的储存 3.数组越界4.数组作为函数参数4.1 冒泡排序函数错误设计4.2 数组名是什么…

Gnomon水下环境 中

海下的石头 方法一 nParticleShape1.zhong_lie rand(0,6); nParticleShape1.xuan_zhuanrand(<<0,0,0>>,<<5,360,5>>); 缩放原始物体 写错地方了&#xff0c;播放石头一样 海下的石头 方法二 有点问题&#xff0c;使用旧粒子系统 让第一针有粒子 播…

基于SpringBoot+Vue的摄影跟拍预定管理系统设计与实现(源码+lw+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

Idea 开启 lombook 注解插件处理器

Idea 开启 lombook 注解插件处理器 方便编译器识别 勾选 Enable annotation processing

【每日一题】—— C. K-th Not Divisible by n (Codeforces Round 640 (Div. 4))

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

【雕爷学编程】Arduino动手做(86)---4*4位 WS2812 全彩模块3

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

导轨表和智能电表有哪些区别?

导轨表和智能电表是两种不同的电表类型&#xff0c;它们在功能、性能和应用领域等方面存在一些区别。下面将从多个方面对这两种电表进行比较和分析。 一、定义和功能 导轨表是一种多功能电力仪表&#xff0c;通常用于测量电流、电压、功率、能量等电参数。它采用模块化设计&am…

小黑子—JavaWeb:第三章 HTTP、Tomcat与Servlet

JavaWeb入门3.0 1. Web核心项目2. HTTP2.2 HTTP请求数据格式2.3 HTTP响应数据格式 3. Tomcat3.1 tomact的基本使用3.2 tomact配置3.3 tomact部署项目3.4 web项目结构3.5 创建MavenWeb项目3.6 IDEA集成本地Tomcat3.7 Tomcat的Maven插件 4. Servlet4.1 Servlet执行流程4.2 Servle…

使用jmeter+ant+jenkins+git搭建自动化测试平台

最近正在学习自动化测试&#xff0c;于是随手搭建了一下jmeterantjenkinsgit平台。 接下来&#xff0c;我会按照jdk&#xff0c;jmeter&#xff0c;ant&#xff0c;jenkins,git这个顺序一步一步的搭建起来。 一、jdk。这个就不多说了。我用的是1.8版本的&#xff0c;配环境变…

c++语言风格字符串和QT风格字符串区别

c语言风格字符串和QT风格字符串区别 API实例 第一个是QT风格字符串 第二个是C风格字符串 c语言风格 string a "hello";std::cout<<a<<endl;;char* aa "hello";qDebug()<<aa;qDebug()<<*aa;QT风格 QString str2("hello2&qu…

VarifocalNet An IoU-aware Dense Object Detector 论文学习

1. 解决了什么问题&#xff1f; 密集目标检测器会预测出大量的候选检测框&#xff0c;如何准确地对它们进行排序是取得优异性能的关键。以前的方法通常会在 NMS 时根据类别得分对预测框做排序&#xff0c;但这可能损害模型表现&#xff0c;因为类别得分并不能体现边框定位的准…

畅网n6005 nas主机更新微码

原因 由于畅网n6005小主机上安装了 pve , 在pve中安装了iStore OS &#xff0c;然后用docker安装了alist 用作nas&#xff0c; 平时在外经常要访问。但是这个机器偶尔死机&#xff0c;导致无法脸上网盘&#xff0c;且家里会断网&#xff0c; 因为我家用这个路由器做软路由。做…

k8s核心概念

一、集群架构与组件 1&#xff0c;相关组件 【1】 master node三个组件 k8s的控制节点&#xff0c;对集群进行调度管理&#xff0c;接受集群外用户去集群操作请求master node 组成&#xff08;四个组件&#xff09;&#xff1a;控制面 API Server&#xff1a;通信kube-Sche…

WormGPT – 网络犯罪分子用来犯罪的人工智能工具

WormGPT – 网络犯罪分子用来发起商业电子邮件泄露攻击的生成式人工智能工具 前言 什么是蠕虫GPT&#xff08;WormGPT&#xff09; WormGPT是基于EleutherAI于2021年创建的大型语言模型GPT-J的AI模型。它具有无限的字符支持、聊天记忆保留和代码格式化功能。 如果未部署适当…

文件或文件夹名称中有空格如何批量去除

平时在工作中会经常碰到文件或文件夹里面有特殊符号&#xff0c;那么要如何批量去除文件名中的特殊符号&#xff1f;其实去符号也不是困难的事&#xff0c;可以使用《文件批量改名高手》对文件名进行批量去除特殊符号&#xff0c;操作步骤如下。 先打开《文件批量改名高手》&a…

React Native实现震动反馈效果

React Native实现理想的震动效果 一、背景说明 业务开发中&#xff0c;总会用到一些和用户反馈的效果&#xff0c;用来提升用户对于某个事件或者操作的重要程度&#xff0c;比如常见的就是 长按复制、滑动或点击图表、点击底部TabBar时的反馈等操作。 二、构思实现及过程 2.…

【Yolov8自动标注数据集教程】

Yolov8自动标注数据集教程 1 前言2 先手动标注数据集&#xff0c;训练出初步的检测模型2.1 手动标注数据集2.2 Yolov8环境配置2.2.1 Yolov8下载2.2.2 Yolov8环境配置 2.3 Yolov8模型训练&#xff0c;得到初步的检测模型2.3.1 训练方式 3 使用初步的检测模型实现自动数据集标注3…

vue3中 状态管理pinia得使用

在做项目中 vue2改造vue3项目时的vuex 发生得一些变化 vue3项目中 先看下 stores.jsimport { defineStore } from pinia 引入方法注册方法 import { getListFieldLevel } from ..api/index.jsexport const useScreenStore defineStore(screen, {state: () > ({fieldList:…

MySQL:MHA高可用

目录 1&#xff0e;什么是 MHA 2&#xff0e;MHA 的组成 3&#xff0e;MHA 的特点 4、MHA工作原理 5、搭建 MySQL MHA 5.1 实验思路 5.1.1 MHA架构 5.1.2 故障模拟 5.2 实验环境 5.3 准备工作 5.4 安装MHA所有组件与测试 5.4.1 安装 MHA 软件 5.4.2 manager与node工…