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 最核心的两大能力:能显示界面 + 自动管内存

相关推荐
我是小灰灰吖3 小时前
QT在线安装器使用指南:从下载到配置完整教程
linux·qt·ubuntu
C++ 老炮儿的技术栈5 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
我是小灰灰吖7 小时前
Ubuntu 22.04 + Qt 6.9.3 应用程序打包与部署完整指南
qt·ubuntu
qq_401700419 小时前
Qt自定义信号槽详解:带参发射 vs sender()获取,两种多信号关联方案全掌握
java·数据库·qt
郝学胜-神的一滴11 小时前
Qt 高级编程 042:进度条从入门到自定义美化
开发语言·c++·qt·软件开发·用户界面
AI的探索之旅12 小时前
嵌入式视觉学习路线:Qt + OpenCV + 工业相机,从零到综合项目
qt·opencv·学习
我是小灰灰吖13 小时前
Ubuntu22.04,OpenCV 4.5.5 环境搭建
linux·qt·ubuntu
≮傷£≯√1 天前
Opencv VideoCapture
qt·opencv
雨田言炎2 天前
十、QThread多线程
linux·服务器·开发语言·前端·qt
常乐か2 天前
在 Ubuntu 24.04 中编译 Qt 5.15.2 项目完全指南
linux·qt·ubuntu