堆栈窗体QSackedWidget类的使用

一、新建项目时,基类选择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()
{
    
    
}


三、运行效果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_27538633/article/details/108922871