对象属性事件

本文介绍了Qt的元对象系统,包括Q_OBJECT宏、Meta-Object编译器moc的作用,以及QObject类如何启用元对象特性。接着讨论了属性的声明和需求,如READ、WRITE、RESET和NOTIFY信号。最后,概述了Qt事件的运行过程,包括事件的发送、处理和过滤,并列举了一些常见的事件类型。
摘要由CSDN通过智能技术生成
元对象系统

元对象系统提供了信号与槽机制

1.QObject类,为objects提供了一个可以利用元对象系统的基类。
2.Q_OBJECT宏: 在类的私有部分声明这个宏可以启用元对象特性,例如:动态属性、信号与槽。
3.Meta-Object编译器(moc): 为每个QObject子类生成必要的代码来实现元对象特性。
moc工具会读取C++源文件,如果发现有包含Q_OBJECT宏的类声明,就生成另外一个包含这些类的元对象代码的C++源文件。生成的源文件要么在类源文件里用#include包含,或者(更常见)与类的实现代码直接进行编译连接。

QObject::metaObject()返回类关联的meta-object对象。

QMetaObject::className()在运行时以字符串的形式返回类名,无需C++编译器提供运行时类别信息(RTTI)的支持。

QObject::inherits()返回一个对象是否是QObject继承树上一个类的实例。

QObject::tr()和QObject::trUtf8()提供国际化支持,将字符串翻译成指定的语言。

QObject::setProperty()和QObject::property()通过名称动态设置和获取属性。

QMetaObject::newInstance()构造类的一个新实例。
qobject_cast()动态转换QObject类的类型。qobject_cast()函数和标准C++的dynamic_cast()功能类似

    QObject *obj=new mywidget;
    QWidget  *wid=qobject_cast<QWidget *>(obj);
    wid->setObjectName("widget");
    mywidget *myw=qobject_cast<mywidget 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值