QT Creator中Stacked Widget實現多界面的跳轉

Qt在不使用雙ui界面的情況下實現界面的跳轉

作爲QT Creator的初學者,在設置ui界面時總是會遇到一些有設計想法但不知道具體流程的情況,初學者最基礎的就是隻做一個界面,所有的按鍵都排布在一個ui界面下,若界面實現的功能多,那按鍵就一定會混雜,或者實現的功能需要一個整頁的文本框,這樣就限制了程序的編寫與設計,這樣,在網上可以查詢到如何設置兩個ui界面,但我今天所寫的是利用第二種方法實現:Stacked Widget

QT中具體實現步驟

這裏把具體的創建工程等步驟給省略掉,直接進入重點(筆者使用的是最普通的QWidget)
在這裏插入圖片描述

向主窗體中拖拽一個Stacked Widget部件,默認是兩個頁面,需要多頁面時可以右鍵->插入頁。
使用Stacked Widget部件拖拽大小,將整個主窗覆蓋,之後向幾個頁面中添加幾個需要的按鍵。如下圖:
在這裏插入圖片描述
/*******************************************************************************/
在這裏插入圖片描述
這裏筆者選用兩個頁面,分別在界面上放置一個按鍵,並在第一個界面上添加了一個文本框(不重要,只是爲了好區分),這樣ui界面就搭建好了;

代碼展示

此處是.cpp文件

#include "app.h"
#include "ui_app.h"

app::app(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::app)
{
    ui->setupUi(this);
    connect(ui->pushButton,&QPushButton::clicked,this,&app::switchPage);
    connect(ui->pushButton_2,&QPushButton::clicked,this,&app::switchPage);
}
app::~app()
{
    delete ui;
}
void app::switchPage(){
    QPushButton *button = qobject_cast<QPushButton*>(sender());//得到按下的按鈕的指針
    if(button==ui->pushButton)
        ui->stackedWidget->setCurrentIndex(0);
    if(button==ui->pushButton_2)
        ui->stackedWidget->setCurrentIndex(1);

}

此處是.h文件

#ifndef APP_H
#define APP_H

#include <QWidget>

namespace Ui {
class app;
}

class app : public QWidget
{
    Q_OBJECT

public:
    explicit app(QWidget *parent = 0);
    ~app();
    void switchPage();

private:
    Ui::app *ui;
};

#endif // APP_H

點擊運行後,點擊前進就跳轉到第二頁,點擊後退就回到第一頁;

以上就是全部的代碼,雖然簡單,但是實用,此部件可自己靈活使用。效果也是五花八門。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章