QObject、QWidget、Widget三者的关系

这三者是层层继承 的关系,一句话概括:
QObject → QWidget → Widget(你自己的类)

我给你画个最清晰的层级图:

继承关系(从上到下)

1. QObject(祖宗)

  • 提供:对象树、信号槽、内存管理
  • 看不见,摸不着,纯功能基类。
    2. QWidget(父类)
  • 继承自: QObject
  • 提供:窗口、控件、绘图、事件
  • 是所有可视化界面的祖宗(按钮、输入框都是它的子类)。
  1. Widget(你的类)
  • 继承自: QWidget
  • 就是你新建项目时,Qt自动生成的那个主窗口类。
  • 代码里长这样:
cpp 复制代码
class Widget : public QWidget  // 看这里!
{
    Q_OBJECT
};

2. 通俗比喻

  • QObject = 动物(有生命,会呼吸=信号槽,有后代=对象树)
  • QWidget = 人(继承了动物的特性,还长了脸、能走路=能显示、能交互)
  • Widget = 你(继承了人的特性,是一个具体的人,你可以给自己穿衣服=加按钮)

3. 核心结论

  • Widget 是 QWidget 的子类,所以它能显示窗口。
  • QWidget 是 QObject 的子类,所以它能自动内存管理、能用信号槽。

所以:你的 Widget 拥有 Qt 最核心的两大能力:能显示界面 + 自动管内存

相关推荐
用户805533698033 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner3 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz8 天前
QML Hello World 入门示例
qt
xcyxiner11 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner12 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner12 天前
DicomViewer (添加模型类)3
qt
xcyxiner13 天前
DicomViewer (目录调整) 2
qt
xcyxiner13 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
桥田智能15 天前
桥田智能 QT-650S:面向白车身焊装的 800kg 重载快换解决方案
开发语言·qt·系统架构
森G15 天前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt