QT 通過QStackedWidget巢狀(切換)子頁面 在主視窗中切換子頁面
阿新 • • 發佈:2020-12-23
- 新建一個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);
}
- 實現效果