今天看了某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 }