QT 通过QStackedWidget嵌套(切换)子页面 在主窗口中切换子页面

  1. 新建一个Widget窗口,作为主窗口
  2. 在这个窗口中,放入一个QPushButton 和 QStackedWidget。

QPushButton名字是change;QStackedWidget名字是page

  1. 新建两个子页面widget

名字分别是a和 b
创建过程:右键项目,添加新文件,然后按照下面的图去选择


  1. 然后设计界面a 和 界面b

胡乱拖了几个控件 布局了一下 --根据实际需求来

5.然后编写主窗口代码
Widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include "a.h"
#include "b.h"
namespace Ui {
    
    
class Widget;
}

class Widget : public QWidget
{
    
    
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
public slots:
    void ChooseWidgets();
private:
    Ui::Widget *ui;
    a *a1;
    b *b1;
    int firstIndex;
};

#endif // WIDGET_H

Widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    
    
    ui->setupUi(this);
    setWindowTitle("页面嵌套");
    //实例化子页面
    a1=new a(this);
    b1=new b(this);
    //添加页面
    ui->page->addWidget(a1);
    ui->page->addWidget(b1);
    //显示页面作为主页
    ui->page->setCurrentWidget(a1);
    //获取当前页面的序号
    firstIndex=ui->page->currentIndex();
       qDebug()<<"firstIndex:"<<firstIndex;
       //连接信号槽
       connect(ui->change,&QPushButton::clicked, this, &Widget::ChooseWidgets);


}

Widget::~Widget()
{
    
    
    delete ui;
}

//切换页面
void Widget::ChooseWidgets()
{
    
    
    //获取页面的数量
    int nCount = ui->page->count();
    //获取当前页面的索引
    int nIndex = ui->page->currentIndex();
    //获取下一个需要显示的页面索引
    nIndex++;

    //当需要显示的页面索引大于等于总页面时,切换至首页
    if (nIndex >= nCount)
    {
    
    
        nIndex = firstIndex;
    }

    //显示当前页面
    ui->page->setCurrentIndex(nIndex);
}

  1. 实现效果

猜你喜欢

转载自blog.csdn.net/weixin_49035356/article/details/111195647
今日推荐