1、新建GUI应用,项目名称"StackedWidget",基类选择"QDialog",类名命名为StackDlg,取消创建界面
stackDlg.h
#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()
{
}