QObject所有Qt对象的基类

40次阅读

共计 846 个字符,预计需要花费 3 分钟才能阅读完成。

QObject 是 Qt 对象模型的核心。该模型的主要功能就是信号和槽机制。


Q_OBJECT 宏

Q_OBJECT 宏用于启用元对象特性,例如动态属性、信号和槽。
对于实现信号和槽的任何对象,都必须添加 Q_OBJECT 宏。

信号和槽

Qt 的信号和槽机制(Signals & Slots)
信号和槽(Signals & Slots)用于对象之间的通信。信号和槽机制是 Qt 的核心特性,可能也是与其他框架所提供的特性最不同的部分。信号和槽是由 Qt 的元对象系统(The Meta-Object System)实现的。

objectName

Qt 对象可以拥有自己的名称,objectName 属性保存对象的名称。它的类型是 QString,可以通过函数 void setObjectName(const QString &name) 设置对象名称。

QObjects 将自己组织在对象树中。

Qt 对象树和 QObject 的构建 / 销毁顺序
当你使用一个对象作为父对象创建一个新的 QObject 时,该对象将自动将其添加到父对象的 children()列表中。父级拥有对象的所有权。 也就是说,它 将在其析构函数中自动删除其子级 。你可以通过:findChild() 函数根据对象名称或类型查找一个对象,findChildren()函数根据对象名称或类型查找一组对象。

T    findChild(const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const
QList<T>    findChildren(const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const
  • QObject 既没有复制构造函数,也没有赋值运算符。QObject 为什么禁用复制构造函数和赋值运算符?

由于没有复制构造函数,QObject 的子类就 不能作为要存储在容器类中的值,只能存储指针。

正文完
 0