1. 程式人生 > 其它 >QT 通過QStackedWidget巢狀(切換)子頁面 在主視窗中切換子頁面

QT 通過QStackedWidget巢狀(切換)子頁面 在主視窗中切換子頁面

技術標籤:qtc++qtcreator

  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. 實現效果