// widget.h
#pragram once // 该头文件只能出现一次
#include <QWidget>
namespcace Ui { // 命名空间
class Widget; // ui_widget.h文件里定义的类,外部声明
}
class Widget: public QWidget {
Q_OBJECT // 宏,使用信号与槽等META层机制时必须添加,一般继承于QObject的子类都要添加这个宏
public:
explict Widget(QWidget * parent = nullptr); // 若传入parent则图形化对象之间有了父子容器的关系
~Widget(); // 析构函数
private:
Ui::Widget * ui; // Ui::Widget搭配上面声明的命名空间,指向可视化界面,也就是.ui设计好的窗口界面
};
// widget.cpp
#include "widget.h" // 包含自己的目录用引号。
#include "ui_widget.h" // 每次编译,编译器都会自动生成该头文件的代码
Widget::widget(QWidget * parent): QWidget(parent), ui(new Ui::Widget) { // 类成员冒号初始化,先调用父类的构造函数QWidget(parent),再ui = new Ui::Widget。使用ui指针可以对控件进行操作,例如ui->helloLabel->setText("hello");
ui->setupUi(this); // 实现了组件的各种设置、信号与槽的关联
}
Widget::~widget() {
delete ui; // 对象树机制,删除了ui,相当于将整个窗口包含其中所有的控件都删了
}