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
點擊運行後,點擊前進就跳轉到第二頁,點擊後退就回到第一頁;
以上就是全部的代碼,雖然簡單,但是實用,此部件可自己靈活使用。效果也是五花八門。