今天看了某xx项目源码。
发现大神们都是这么写代码的。
比如QTableWidget,每一个页面都插入一个QWidget,而不是一个人在一个一个Tab里面拖控件。
原始的运行图如下(没有插入QWidget):
插入两个QWidget后效果如下:
代码如下:
Widget.h
1 #ifndef WIDGET_H
2 #define WIDGET_H
3
4 #include <QWidget>
5 #include "form1.h"
6 #include "form2.h"
7
8
9 namespace Ui {
10 class Widget;
11 }
12
13 class Widget : public QWidget
14 {
15 Q_OBJECT
16
17 public:
18 explicit Widget(QWidget *parent = 0);
19 ~Widget();
20
21 private:
22 Ui::Widget *ui;
23 Form1 *form1;
24 Form2 *form2;
25 };
26
27 #endif // WIDGET_H
form1.h
1 #ifndef FORM1_H
2 #define FORM1_H
3
4 #include <QWidget>
5
6 namespace Ui {
7 class Form1;
8 }
9
10 class Form1 : public QWidget
11 {
12 Q_OBJECT
13
14 public:
15 explicit Form1(QWidget *parent = 0);
16 ~Form1();
17
18 private:
19 Ui::Form1 *ui;
20 };
21
22 #endif // FORM1_H
form2.h
1 #ifndef FORM2_H
2 #define FORM2_H
3
4 #include <QWidget>
5
6 namespace Ui {
7 class Form2;
8 }
9
10 class Form2 : public QWidget
11 {
12 Q_OBJECT
13
14 public:
15 explicit Form2(QWidget *parent = 0);
16 ~Form2();
17
18 private:
19 Ui::Form2 *ui;
20 };
21
22 #endif // FORM2_H
widget.cpp
1 #include "widget.h"
2 #include "ui_widget.h"
3
4 Widget::Widget(QWidget *parent) :
5 QWidget(parent),
6 ui(new Ui::Widget)
7 {
8 ui->setupUi(this);
9 form1=new Form1();
10 ui->tabWidget->insertTab(0,form1,tr("全是按钮"));
11
12 form2=new Form2();
13 ui->tabWidget->insertTab(1,form2,tr("全是CheckBox"));
14 }
15
16 Widget::~Widget()
17 {
18 delete ui;
19 }
form1.cpp
1 #include "form1.h"
2 #include "ui_form1.h"
3
4 Form1::Form1(QWidget *parent) :
5 QWidget(parent),
6 ui(new Ui::Form1)
7 {
8 ui->setupUi(this);
9 }
10
11 Form1::~Form1()
12 {
13 delete ui;
14 }
form2.cpp
1 #include "form2.h"
2 #include "ui_form2.h"
3
4 Form2::Form2(QWidget *parent) :
5 QWidget(parent),
6 ui(new Ui::Form2)
7 {
8 ui->setupUi(this);
9 }
10
11 Form2::~Form2()
12 {
13 delete ui;
14 }
main.cpp
1 #include "widget.h"
2 #include <QApplication>
3
4 int main(int argc, char *argv[])
5 {
6 QApplication a(argc, argv);
7 Widget w;
8 w.show();
9
10 return a.exec();
11 }