《Qt5 開發與實例(第三版)》學習筆記(八)
阿新 • • 發佈:2018-01-26
nbsp font public insert enter body win parent hbox
1 // 3.3 堆棧窗體 QStackedWidget類
2 //stackdlg.h
3 #ifndef STACKDLG_H
4 #define STACKDLG_H
5
6 #include <QDialog>
7 #include <QListWidget>
8 #include <QStackedWidget>
9 #include <QLabel>
10 class StackDlg : public QDialog
11 {
12 Q_OBJECT
13
14 public:
15 StackDlg(QWidget *parent = 0 );
16 ~StackDlg();
17 private:
18 QListWidget *list;
19 QStackedWidget *stack;
20 QLabel *label1;
21 QLabel *label2;
22 QLabel *label3;
23 };
24
25 #endif // STACKDLG_H
26 //stackdlg.cpp
27 #include "stackdlg.h"
28 #include <QHBoxLayout>
29 StackDlg::StackDlg(QWidget *parent)
30 : QDialog(parent)
31 {
32 setWindowTitle(tr("StackedWidget"));
33 list =new QListWidget(this);//新建一個QListWidget對象
34 list->insertItem(0,tr("Window1"));//插入條目
35 list->insertItem(1,tr("Window2"));
36 list->insertItem(2,tr("Window3"));
37 label1 =new QLabel(tr("WindowTest1 "));//創建標簽控件對象
38 label2 =new QLabel(tr("WindowTest2"));
39 label3 =new QLabel(tr("WindowTest3"));
40 stack =new QStackedWidget(this);//新建堆棧窗體對象
41 stack->addWidget(label1);//將標簽控件插入到堆棧窗體中
42 stack->addWidget(label2);
43 stack->addWidget(label3);
44 QHBoxLayout *mainLayout =new QHBoxLayout(this);//對整個對話框進行布局
45 mainLayout->setMargin(5);//對話框邊距
46 mainLayout->setSpacing(5);//控件之間的間距
47 mainLayout->addWidget(list);
48 mainLayout->addWidget(stack,0,Qt::AlignHCenter);
49 mainLayout->setStretchFactor(list,1);
50 mainLayout->setStretchFactor(stack,1);
51 connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
52
53 }
54
55 StackDlg::~StackDlg()
56 {
57
58 }
《Qt5 開發與實例(第三版)》學習筆記(八)