1.QObject类

来源:互联网 发布:淘宝网上怎样卖东西 编辑:程序博客网 时间:2024/06/05 10:24

简述

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”)快得多。

0 0