一、新建项目时,基类选择QDialog,取消“创建界面”的复选框选中状态。
二、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 = nullptr);
~StackDlg();
private:
QListWidget *list;
QStackedWidget *stack;
QLabel *label1;
QLabel *label2;
QLabel *label3;
};
#endif // STACKDLG_H
二、stackdlg.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")); // 创建QLabel1标签控件对象
label2 = new QLabel(tr("WindowTest2"));
label3 = new QLabel(tr("WindowTest3"));
stack = new QStackedWidget(this);// 新建一个QStackedWindget堆栈窗体对象
stack->addWidget(label1);// 将新建的QLabel1标签控件插入堆栈窗体中
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); //设定可伸缩控件
mainLayout->setStretchFactor(stack,3);
connect(list,SIGNAL(currentRowChanged(int)),stack,
SLOT(setCurrent Index(INT)));
}
StackDlg::~StackDlg()
{
}
三、运行效果