- MyWidget做父窗体
- MyWidget的构造函数中可以手动添加组件
- Ui::MyWidget存放子部件
- Ui::MyWidget执行setupUi()函数为子部件开辟空间,指定父窗体
- MyWidget只能调用构造函数中添加的组件
- Ui::MyWidget只能调用UI文件中的子部件
- Ui::MyWidget不是Wiget类,只是一个普通类,不能拿他做父窗体
测试:
1.新建GUI工程,主类MyWidget,UI上拖放一个Frame
以后都用Qt5了,省得汉字转码
2.-----mywidget.cpp-----
#include "mywidget.h" #include "ui_mywidget.h" #include <QPushButton> MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget) { ui->frame = new QFrame(this); ui->frame->setFrameShape(QFrame::Box); QPushButton* btn1 = new QPushButton("胡芦包", ui->frame); ui->setupUi(this); QPushButton* btn2 = new QPushButton("木瓜酥", ui->frame); } MyWidget::~MyWidget() { delete ui; }
构造函数执行setupUi之前,frame指针还是null
构造函数执行setupUi后,frame指针指向了新的内存空间