QT-入门(元对象系统)

Qt核心

QT-入门(元对象系统)_第1张图片

元对象系统

QT-入门(元对象系统)_第2张图片
元对象系统解析:https://blog.csdn.net/spwper/article/details/51332187

动态投射

QT-入门(元对象系统)_第3张图片
这样投射是失败的,返回指针label为NULL,因为QMyWidget不是QLabel的子类。
使用动态投射,使得程序可以在运行时对不同的对象做不同的处理。

属性系统

两个宏
Q_PROPERTY(),基于元对象系统实现。Qt的属性系统与C++编译器无关,可以用任何标准的C++编译器编译定义了属性的Qt C++程序
静态属性只能用setProperty()和property()来设置和获得属性
Q_CLASSINFO(),可以为类的元对象定义“名称–值”信息

信号槽

注意,若对象的信号有重载,必须使用SIGNAL,SLOT形式connect

在这里插入图片描述
QT-入门(元对象系统)_第4张图片

利用sender()获取并操作信号发送者

QT-入门(元对象系统)_第5张图片
这种编写代码的方式一般用于为多个同类型组件的同一信号编写同一个槽函数,在槽函数里区分信号来源分别做处理,避免为每个组件分别编写槽函数形成的代码冗余。

元对象特性测试demo

参考:https://blog.csdn.net/bjtuwayne/article/details/97422833

类的元对象信息获取

QT-入门(元对象系统)_第6张图片
QT-入门(元对象系统)_第7张图片

textEdit輸出方法

ui->textEdit->appendPlainText(name+","+Sex+QString::asprintf(",年齡=%d",Age));

你可能感兴趣的:(QT)