这三者是层层继承 的关系,一句话概括:
QObject → QWidget → Widget(你自己的类)
我给你画个最清晰的层级图:
继承关系(从上到下)
1. QObject(祖宗)
- 提供:对象树、信号槽、内存管理
- 看不见,摸不着,纯功能基类。
2. QWidget(父类) - 继承自: QObject
- 提供:窗口、控件、绘图、事件
- 是所有可视化界面的祖宗(按钮、输入框都是它的子类)。
- Widget(你的类)
- 继承自: QWidget
- 就是你新建项目时,Qt自动生成的那个主窗口类。
- 代码里长这样:
cpp
class Widget : public QWidget // 看这里!
{
Q_OBJECT
};
2. 通俗比喻
- QObject = 动物(有生命,会呼吸=信号槽,有后代=对象树)
- QWidget = 人(继承了动物的特性,还长了脸、能走路=能显示、能交互)
- Widget = 你(继承了人的特性,是一个具体的人,你可以给自己穿衣服=加按钮)
3. 核心结论
- Widget 是 QWidget 的子类,所以它能显示窗口。
- QWidget 是 QObject 的子类,所以它能自动内存管理、能用信号槽。
所以:你的 Widget 拥有 Qt 最核心的两大能力:能显示界面 + 自动管内存。