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