首页 > 其他分享 >Qt Metadata

Qt Metadata

时间:2024-09-17 13:12:54浏览次数:9  
标签:Qt parent int void GranPa Child Parent Metadata

1.code

class GranPa: public QObject
{
Q_OBJECT
public:
explicit GranPa(QObject *parent = nullptr);

signals:
void gran_siga();
void gran_sigb();
void gran_sigc();
public slots:
void gran_slota();
void gran_slotb();
void gran_slotc();
};

GranPa::GranPa(QObject *parent)
QObject{parent}
{}

void GranPa::gran_slota()
{
qDebug() << FUNCTION;
}

void GranPa::gran_slotb()
{

}

void GranPa::gran_slotc()
{

}

class Parent : public GranPa
{
Q_OBJECT
public:
explicit Parent(QObject *parent = nullptr);

signals:
void parent_siga();
void parent_sigb();
void parent_sigc();
public slots:
void parent_slota();
void parent_slotb();
void parent_slotc();
};

Parent::Parent(QObject *parent)
GranPa{parent}
{}

void Parent::parent_slota()
{
qDebug() << FUNCTION;
}

void Parent::parent_slotb()
{

}

void Parent::parent_slotc()
{

}

class Add
{
public:
int a;
int b;
Add(){}
Add(const Add& add) {
this->a = add.a;
this->b = add.b;
}
virtual void say()
{}

} ;

typedef struct
{
int a;
int b;
} Sub;
class Child : public Parent
{
Q_OBJECT
Q_PROPERTY(Add propertyA READ getPropertyA WRITE setPropertyA)
Q_PROPERTY(Sub propertySub READ getPropertySub WRITE setPropertySub)
public:
explicit Child(QObject *parent = nullptr);
Add getPropertyA()
{
return _add;
}
Sub getPropertySub()
{
return _sub;
}
void setPropertyA(Add param)
{
_add = param;
}

void setPropertySub(Sub param)
{
    _sub = param;
}

signals:
void child_siga(int a, int b);
void child_sigb(Add param);
void child_sigc();
public slots:
int child_slota(int a, int b);
int child_slotb(Add param);
void child_slotc();
private:
Add _add;
Sub _sub;
};

Child::Child(QObject *parent)
Parent{parent}
{}

int Child::child_slota(int a, int b)
{
qDebug()<< FUNCTION << " a + b = " << a+b;
return a + b;
}

int Child::child_slotb(Add param)
{
qDebug() << FUNCTION << " a + b = " << param.a + param.b ;
return param.a + param.b;
}

void Child::child_slotc()
{

}

int main(int argc, char* argv[])
{
QCoreApplication a(argc, argv);

Child child;

qRegisterMetaType<Add>("Add");

for (const QMetaObject* mo = child.metaObject(); mo != nullptr; mo = mo->superClass())
{
    cout << mo->className() <<" methodoffset : " << mo->methodOffset() << endl;
    cout << mo->className() <<" methodCount  : " << mo->methodCount() << endl;
    cout << mo->className() << " propertyOffset  : " << mo->propertyOffset() << endl;
    cout << mo->className() << " propertyCount  : " << mo->propertyCount() << endl;

    cout << "=================================================================" << endl;
}


const QMetaObject* mo = child.metaObject();
cout << "methodoffset : " << mo->methodOffset() << endl;
cout << "methodCount for Child : " << mo->methodCount() << endl;
const char* signal = "child_sigb(Add)";
cout << "signal index : " << mo->indexOfSignal(signal) << endl;

return a.exec();

}

Console Output==================

Child methodoffset : 16
Child methodCount : 22
Child propertyOffset : 1
Child propertyCount : 3

Parent methodoffset : 10
Parent methodCount : 16
Parent propertyOffset : 1
Parent propertyCount : 1

GranPa methodoffset : 4
GranPa methodCount : 10
GranPa propertyOffset : 1
GranPa propertyCount : 1

QObject methodoffset : 0
QObject methodCount : 4
QObject propertyOffset : 0
QObject propertyCount : 1

methodoffset : 16
methodCount for Child : 22
signal index : 17

标签:Qt,parent,int,void,GranPa,Child,Parent,Metadata
From: https://www.cnblogs.com/DesertCactus/p/18417067

相关文章

  • => ERROR [internal] load metadata for docker.io/library/alpine:3.13+vscode+python
    遇到这个问题,找了很久,网上也没有找到什么解决办法,我就已经解决了问题,分享一下。这种情况应该是网络的原因,目前我找到了两种解决方法,已经成功解决。1.在终端手动拉取镜像,手动拉取镜像可以避免网络问题2.使用国内镜像加速器打开DockerDesktop。进入Settings->DockerEn......
  • 快速入门 QT5 C++基础
    1.QT5中文显示乱码方法一:system("chcp65001");//放在主函数中方法二:首先引入库  #include"windows.h"再在主函数中写 SetConsoleOutputCP(CP_UTF8);2.什么是类,如何创建一个类#include<iostream>#include"windows.h"usingnamespacestd;classDog{/......
  • WSL2+Ubuntu 22.04搭建Qt开发环境+中文输入法
    WSL2+Ubuntu22.04搭建Qt开发环境+中文输入法安装wsl略wsl更新wsl--updatewsl--versionwsl--status我的显示如下,如果你的版本不是wsl2需要改为wsl2:$wsl--update正在安装:适用于Linux的Windows子系统已安装适用于Linux的Windows子系统。$wsl......
  • Yolov5水果分类识别+pyqt交互式界面
    Yolov5FruitsDetectorYolov5是一种先进的目标检测算法,可以应用于水果分类识别任务。结合PyQT框架,可以创建一个交互式界面,使用户能够方便地上传图片并获取水果分类结果。以下将详细阐述Yolov5水果分类识别和PyQT交互式界面的实现。Yolov5是由Ultralytics公司开......
  • C++/Qt版餐厅点餐系统模块作品——演示(有需要的找我)
    点餐管理系统客户端APP代码展示顾客端(客户端)Widget.hChiddrom.hStrucural.hMain.cppWidget.cppChiddrom.cpp二、效果展示顾客端(客户端)厨房端(客户端)3、收银员(客户端)......
  • jsp宠物领养网站qtr62 本系统(程序+源码+数据库+调试部署+开发环境)
    jsp宠物领养网站qtr62本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能送养用户,领养用户,宠物分类,宠物招领,宠物领养技术要求:   开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用Spri......
  • 《欢迎来到帕拉迪泽》qt5cored.dll丢失错误:一站式解决方案分享
    在《欢迎来到帕拉迪泽》这款游戏中,出现“qt5cored.dll丢失”的问题,可能由以下几个原因造成:一、原因分析安装问题:在游戏安装过程中,qt5cored.dll文件可能因安装程序未能完整执行而未被正确安装到系统目录中。安装包可能已损坏或不完整,导致某些文件未能成功安装。文件被删......
  • 带你0到1之QT编程:十二、视图宝典,点通views的任督二脉
    此为QT编程的第十二谈!关注我,带你快速学习QT编程的学习路线!每一篇的技术点都是很很重要!很重要!很重要!但不冗余!我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点!码农不易,各位学者学到东西请点赞支持支持!开始部分:总:view视图组:QListView、QTreeView、TableView、QLi......
  • 在Qt中使用纯代码实现图片显示
    一、实验目的和要求:QtUI编程综合训练,使学生熟练掌握常用UI组件的使用。1.使用树形结构列表显示磁盘文件夹和图片文件。2.使用显示控件显示图片。3.具有基本的图片查看功能。4.具有菜单栏和工具栏。二、软件设计界面三、软件源代码(源代码要有完整的注释)#include "n......
  • Qt框架自学
    Qt框架是一种强大的跨平台C++应用程序开发工具,它不仅支持图形用户界面的开发,还涵盖了多线程、数据库访问、网络通信等多方面的功能。以下是一些关于Qt框架自学的建议:了解基础概念:在开始学习之前,需要对Qt框架有一个基本的了解。Qt是一个由Trolltech公司(现为TheQtCompany)开发的开......