头文件:
#ifndef STACKDIALOG_H
#define STACKDIALOG_H
#include <QDialog>
#include<QListWidget>
#include<QStackedWidget>
#include<QLabel>
namespace Ui {
class stackDialog;
}
class stackDialog : public QDialog
{
Q_OBJECT
public:
explicit stackDialog(QWidget *parent = nullptr);
~stackDialog();
private:
QListWidget *list;
QStackedWidget *stack;
QLabel *label1;
QLabel *label2;
QLabel *label3;
Ui::stackDialog *ui;
};
#endif // STACKDIALOG_H
源文件:
#include "stackdialog.h"
#include "ui_stackdialog.h"
#include<QHBoxLayout>
stackDialog::stackDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::stackDialog)
{
ui->setupUi(this);
setWindowTitle("stack");
list=new QListWidget(this);
stack=new QStackedWidget(this);
list->insertItem(0,"select1");
list->insertItem(1,"select2");
list->insertItem(2,"select3");
label1=new QLabel("window1");
label2=new QLabel("window2");
label3=new QLabel("window3");
stack->addWidget(label1);
stack->addWidget(label2);
stack->addWidget(label3);
QHBoxLayout *mylayout=new QHBoxLayout(this);
mylayout->setMargin(5);//边距
mylayout->setSpacing(5);//间距
mylayout->addWidget(list);
mylayout->addWidget(stack,Qt::AlignCenter);
mylayout->setStretchFactor(list,1);
mylayout->setStretchFactor(stack,3);
connect(list,&QListWidget::currentRowChanged,stack,&QStackedWidget::setCurrentIndex);
}
stackDialog::~stackDialog()
{
delete ui;
}