你说的是 Qt 新建项目时,系统自动生成的那个 Widget 类对吧?我给你讲清楚它到底是啥、怎么来的、干啥用的。
一、Widget 是什么?
QWidget 是 Qt 里所有界面控件的"祖宗"。
按钮、输入框、窗口、标签......全都是它的子类。
你新建项目时,Qt 自动给你生成一个:
cpp
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
它就是你的主窗口。
二、系统为什么自动生成它?
因为 Qt 程序必须有一个顶层窗口 ,否则界面显示不出来。
系统自动生成 Widget ,就是给你一个现成可用的主窗口,你直接往里加按钮、布局就行。
三、它是怎么"自动生成"的?
你新建项目时选:
Qt Widgets Application
Qt Creator 就会自动生成 3 个文件:
- widget.h
- widget.cpp
- widget.ui (可视化界面文件)
这是 Qt 的默认模板,为了让你快速开始写界面。
四、它和对象树的关系(重点)
这个 Widget 就是对象树的根节点 。
你在上面放的所有控件(按钮、输入框),它都是父对象。
所以:
- 关闭窗口 → Widget 销毁
- 所有子控件自动跟着销毁(内存安全)
五、一句话总结
Widget = Qt 自动给你的主窗口 + 对象树根节点
不用你自己写,直接用就行。