1.QObject类

简述

QObject类是所有Qt对象的基类。

QObject是Qt对象模型的核心。 该模型的核心特征是称为信号和槽的对象通信机制。 您可以使用connect()将信连接到槽,并用disconnect()终止该连接。
为了避免信号死循环,你可以调用blockSignals()去终止该对象的信号发射。 保护类型函数connectNotify()和disconnectNotify()可以跟踪连接。

QObjects对象结构中组织起来。当创建一个QObject对象,以另一个对象作为父对象时,该对象将自动添加到父对象的children()列表中。父类对象拥有 子类 对象的 所有权即它将在析构函数中自动删除子类对象。你可以通过findChild()或者findChildren()函数由名称或者类型查找对象。

每个对象都有一个objectName(),对象的类名也可以通过metaObject::className()获得。你可以用inherits()函数来判断对象是否继承自另外一个类。
当一个对象被删除时,它会发出一个destroy()信号。 您可以捕获此信号,以避免对空指针的引用。

QObjects可以通过event()接收事件,也可以过滤其他对象的事件。 有关详细信息,请参阅installEventFilter()和eventFilter()。

事件在创建对象的线程中传递。请注意,对于没有线程亲和性(thread()返回零)的QObject,完全不执行事件处理。使用moveToThread()函数来更改对象
及其子对象的线程亲和性(如果对象具有父对象则不能被移动)。

请注意,对于实现信号机制动态对象属性,Q_OBJECT宏是必需的。你需要在源文件上运行元对象编译器我们强烈建议在QObject的所有子类中使用
此宏。无论是否使用了信号和槽机制,这样做避免一些奇怪的行为。

所有Qt Widget都继承QObject。一个方便的函数isWidgetType()返回一个对象是否是一个Widget。它比qobject_cast <QWidget *>(obj)
obj-> inherits(“QWidget”)快得多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值