一、新建GUI應用,項目名稱"StackedWidget",基類選擇"QDialog",類名命名爲StackDlg,取消建立界面
stackDlg.hwindows
#ifndef STACKDLG_H #define STACKDLG_H #include <QDialog> #include <QDialog> #include <QListWidget> #include <QStackedWidget> #include <QLabel> class StackDlg : public QDialog { Q_OBJECT public: StackDlg(QWidget *parent = 0); ~StackDlg(); private: QListWidget *list; QStackedWidget *stack; QLabel *label1; QLabel *label2; QLabel *label3; }; #endif // STACKDLG_H
stackwindows.cpp函數
#include "stackdlg.h" #include <QHBoxLayout> // StackDlg::StackDlg(QWidget *parent) : QDialog(parent) { setWindowTitle(tr("StackedWidget")); list = new QListWidget(this); //新建一個QListWidget對象 list->insertItem(0, tr("window1")); //插入三個條目 list->insertItem(1, tr("window2")); list->insertItem(2, tr("window3")); label1 = new QLabel(tr("windowTest1")); //新建三個標籤對象,做爲堆棧窗口須要顯示的三層窗體 label2 = new QLabel(tr("windowTest2")); label3 = new QLabel(tr("windowTest3")); stack = new QStackedWidget(this); //新建一個堆棧窗體對象 stack->addWidget(label1); //將新建的三個QLabel標籤控件依次插入堆棧窗體中 stack->addWidget(label2); stack->addWidget(label3); QHBoxLayout *mainLayout = new QHBoxLayout(this); //對整個對話框進行佈局 mainLayout->setMargin(5); //設置對話框的邊距爲5 mainLayout->setSpacing(5); //設置各個控件之間的間距爲5 mainLayout->addWidget(list); mainLayout->addWidget(stack,0,Qt::AlignHCenter); mainLayout->setStretchFactor(list, 1); //設置list爲可伸縮控件 mainLayout->setStretchFactor(stack,3); connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int))); //將 QListWidget的currentRowChanged信號和堆棧窗體的setCurrentIndex槽函數鏈接起來,實現按選擇顯示窗體。 } StackDlg::~StackDlg() { }