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

元对象系统功能

元对象系统功能

在这里插入图片描述

建立工程
在这里插入图片描述
布局页面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
布局页面
在这里插入图片描述
在这里插入图片描述
修改原件名称
在这里插入图片描述
建立元对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
函数作为接口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

增加一些固定的属性
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#-------------------------------------------------
#
# Project created by QtCreator 2023-10-24T21:54:44
#
#-------------------------------------------------QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = sample_3
TEMPLATE = app# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \widget.cpp \tperson.cppHEADERS += \widget.h \tperson.hFORMS += \widget.ui
#ifndef TPERSON_H
#define TPERSON_H#include <QObject>class TPerson : public QObject
{Q_OBJECT//提示信息Q_CLASSINFO("author","wang")Q_CLASSINFO("company","UPC")Q_CLASSINFO("version","2.0.0")Q_PROPERTY(int age READ age WRITE setAge NOTIFY ageChanged)Q_PROPERTY(QString name MEMBER m_name)Q_PROPERTY(int score MEMBER m_score)
public:explicit TPerson(QString name,QObject *parent = nullptr);~TPerson();//定义函数接口--对接年龄属性int age();//读年龄void setAge(quint8 ageValue);//写年龄void incAge();//增加年龄signals:void ageChanged(int ageValue);//年龄改变时,触发的函数public slots:private://任务属性QString m_name;int m_age = 10;int m_score = 79;
};#endif // TPERSON_H
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
class TPerson;//定义一个类namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private ://定义二个类指针TPerson *boy;TPerson *girl;
private slots://定义二个槽函数void do_ageChanged(int value);void do_spinChanged(int argl);void on_btnBoylnc_clicked();void on_btnGirlnc_clicked();void on_btnClear_clicked();void on_btnClassinfo_clicked();private:Ui::Widget *ui;
};#endif // WIDGET_H
#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
#include "tperson.h"TPerson::TPerson(QString name,QObject *parent) : QObject(parent),m_name(name)
{}TPerson::~TPerson()
{qDebug("TPerson类的对象被删除");}int TPerson::age()
{return m_age;
}void TPerson::setAge(quint8 ageValue)
{if(m_age != ageValue){m_age = ageValue;emit ageChanged(m_age);}}void TPerson::incAge()
{++m_age;emit ageChanged(m_age);
}
#include "widget.h"
#include "ui_widget.h"
#include "tperson.h"
#include<QMetaProperty>
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);//初始化界面boy = new TPerson("小明",this);boy->setProperty("sex","boy");boy->setProperty("age",10);boy->setProperty("score",70);girl = new TPerson("小丽",this);girl->setProperty("sex","gril");girl->setAge(20);ui->spinBoy->setProperty("isBoy",true);ui->spinGirl->setProperty("isBoy",false);connect(boy,SIGNAL(ageChanged(int)),ui->spinBoy,SLOT(setValue(int)));connect(girl,SIGNAL(ageChanged(int)),ui->spinGirl,SLOT(setValue(int)));connect(boy,SIGNAL(ageChanged(int)),this,SLOT(do_ageChanged(int)));connect(girl,SIGNAL(ageChanged(int)),this,SLOT(do_ageChanged(int)));connect(ui->spinBoy,SIGNAL(valueChanged(int)),this,SLOT(do_spinChanged(int)));connect(ui->spinGirl,SIGNAL(valueChanged(int)),this,SLOT(do_spinChanged(int)));
}Widget::~Widget()
{delete ui;
}void Widget::do_ageChanged(int value)
{//Q_UNUSED(value);TPerson *person = qobject_cast<TPerson*>(sender());QString str = QString("name=%1,sex=%2,年龄=%3").arg(person->property("name").toString()).arg(person->property("sex").toString()).arg(value);ui->plainTextEdit->appendPlainText(str);
}void Widget::do_spinChanged(int argl)
{//Q_UNUSED(argl);QSpinBox *spinBox = qobject_cast<QSpinBox*>(sender());if(spinBox->property("isBoy").toBool())boy->setAge(argl);elsegirl->incAge();
}void Widget::on_btnBoylnc_clicked()
{boy->incAge();
}void Widget::on_btnGirlnc_clicked()
{girl->incAge();
}void Widget::on_btnClear_clicked()
{ui->plainTextEdit->clear();
}void Widget::on_btnClassinfo_clicked()
{const QMetaObject *meta = boy->metaObject();ui->plainTextEdit->appendPlainText(QString("类名称:%1\n").arg(meta->className()));ui->plainTextEdit->appendPlainText("属性:");for(int i = meta->propertyOffset();i < meta->propertyCount();i++){const char *proName = meta->property(i).name();QString propValue = boy->property(proName).toString();ui->plainTextEdit->appendPlainText(QString("属性名称=%1,属性值=%2").arg(proName).arg(propValue));}ui->plainTextEdit->appendPlainText("\n类信息(classInfo):");for(int i = meta->propertyOffset();i < meta->propertyCount();i++){QMetaClassInfo classInfo = meta->classInfo(i);ui->plainTextEdit->appendPlainText(QString("Name=%1,value=%2").arg(classInfo.name()).arg(classInfo.value()));}
}

在这里插入图片描述

http://www.lryc.cn/news/206372.html

相关文章:

  • 【2024秋招】小米中间件后端开发一面2023-9-13-base武汉
  • SpringMVC Day 01:入门案例
  • docker、docker-compose安装教程,很详细
  • 源代码转换:Tangible Software Solutions 23.10 Crack
  • SAD notes
  • [SQL开发笔记]BETWEEN操作符:选取介于两个值之间的数据范围内的值
  • Babylonjs学习笔记(三)——创建天空盒
  • 【计算机网络】文件传输协议FTP和SFTP
  • Python 编程语言的介绍
  • centos服务器搭建安装Gitlab教程使用教程
  • linux复习笔记02(小滴课堂)
  • AWVS漏洞扫描使用基础与介绍
  • Flink 维表关联
  • 阳光蟹场小程序的盈利模式与思考深度
  • 2-Java进阶知识总结-7-UDP-TCP
  • C++数据结构X篇_19_排序基本概念及冒泡排序(重点是核心代码,冒泡是稳定的排序)
  • 工作:三菱伺服驱动器连接参数及其电机钢性参数配置与调整
  • 企事业单位/公司电脑文件透明加密保护 | 防泄密软件\系统!
  • [Leetcode] 0101. 对称二叉树
  • .NET、VUE利用RSA加密完成登录并且发放JWT令牌设置权限访问
  • go实现文件的读写
  • 基于 nodejs+vue购物网站设计系统mysql
  • Mysql数据库 4.SQL语言 DQL数据操纵语言 查询
  • threejs(3)-详解材质与纹理
  • 10月最新H5自适应樱花导航网站源码SEO增强版
  • 探索SOCKS5与SK5代理在现代网络环境中的应用
  • 有六家机器视觉公司今年11月份初放假到明年春节后,除夕不放假看住企业不跑路,不倒闭,明年大家日子会越来越甜
  • 【Linux】MAC帧协议 + ARP协议
  • 深入理解指针:【探索指针的高级概念和应用一】
  • Leetcode周赛365补题(3 / 3)