Qt5開發及實例學習之堆棧窗口StackedWidget

一、新建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()
{

}

相關文章
相關標籤/搜索