堆栈窗体多于列表框QListWidget及下拉列表框QComboBox配合使用。
(1)新建项目,基类QDialog,类名StackDlg,取消创建界面,
(2)在stackdlg.h文件中添加代码
#ifndef STACKDLG_H
#define STACKDLG_H
#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
(3)打开stackdlg.cpp文件,在停靠窗口StackDlg类的构造函数中添加如下代码
#include "stackdlg.h"
#include <QHBoxLayout>
StackDlg::StackDlg(QWidget *parent)
: QDialog(parent)
{
setWindowTitle(tr("StackedWidget"));
list=new QListWidget(this);//新建一个QListWidget控件对象
//在新建的QListWidget控件中插入三个条目,作为选择项
list->insertItem(0,tr("Window1"));
list->insertItem(1,tr("Window2"));
list->insertItem(2,("Window3"));
//创建三个QLabel标签控件对象,作为堆栈窗口需要显式的三层窗体
label1=new QLabel(tr("WindowText1"));
label2=new QLabel(tr("WindowText2"));
label3=new QLabel(tr("WindowText3"));
stack=new QStackedWidget(this);
//新建一个QStackWidgetd堆栈窗体对象
//将创建的三个QLabel标签控件依次插入堆栈窗体中
stack->addWidget(label1);
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::AlignCenter);
mainLayout->setStretchFactor(list,1);
//设定可伸缩控件(序号从0编号),第二个参数的值大于0表示此控件为可伸缩控件。
mainLayout->setStretchFactor(stack,3);
connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
}
StackDlg::~StackDlg()
{
}