- 新建一个Widget窗口,作为主窗口
- 在这个窗口中,放入一个QPushButton 和 QStackedWidget。
QPushButton名字是change;QStackedWidget名字是page
- 新建两个子页面widget
名字分别是a和 b
创建过程:右键项目,添加新文件,然后按照下面的图去选择
- 然后设计界面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);
}
- 实现效果