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的子类就不能作为要存储在容器类中的值,只能存储指针。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。