Qt學習 多頁面切換

2021-08-16 06:32:01 字數 3289 閱讀 8822

用qstackedlayout可以把多個頁面放在一起,疊加起來,他會顯示第乙個新增進去的頁面(index0)。然後通過在頁面裡面傳送訊號,qstackedlayout::setcurrentindex可以改變當前要顯示的頁面的index。

根據此文引數寫了乙個切換的例子:在此致謝!

首先,有乙個容器類widget,此類不需要ui,main來啟動此類;

然後,有3個頁面,使用設計師介面類,我們直接在ui拖動控制項進行測試比較方便。

main:

#include "one.h"

widget.h:

#ifndef widget_h

#define widget_h

#include #include #include #include #include #include class widget : public qwidget

;#endif // widget_h

widget.cpp:

#include "widget.h"

widget::widget(qwidget *parent) : qwidget(parent)

widget::~widget()

one.h:

#ifndef one_h

#define one_h

#include namespace ui

class one : public qwidget

;#endif // one_h

one.cpp:

#include "one.h"

#include "ui_one.h"

one::one(qwidget *parent) :

qwidget(parent),

ui(new ui::one)

one::~one()

void one::on_nextbtn_clicked()

two.h:

#ifndef two_h

#define two_h

#include namespace ui

class two : public qwidget

;#endif // two_h

two.cpp:

#include "two.h"

#include "ui_two.h"

two::two(qwidget *parent) :

qwidget(parent),

ui(new ui::two)

two::~two()

void two::on_prebtn_clicked()

void two::on_nextbtn_clicked()

three.h:

#ifndef three_h

#define three_h

#include namespace ui

class three : public qwidget

;#endif // three_h

three.cpp:

#include "three.h"

#include "ui_three.h"

three::three(qwidget *parent) :

qwidget(parent),

ui(new ui::three)

three::~three()

void three::on_prebtn_clicked()

明白乙個主旨就是:通過qstackedlayout可以實現多個頁面疊加在一起,然後通過setcurrentindex來切換顯示哪乙個。

另外乙個點是:qstackedlayout本身是乙個layout元件,我們可以像新增普通layout那樣新增這個元件,那麼我們可以實現區域性的切換。

(1)測試發現,qstackedlayout和qstackedwidget都是可以使用的,但是使用qstackedlayout在啟動的時候會有視窗閃爍的現象,而qstackedwidget沒有;

(2)他們新增到父容器的方法有點區別,乙個是addlayout,乙個是addwidget;

(3)乙個layout是沒辦法直接新增到qstackedlayout或者qstackedwidget的,就像之前做排版布局的經驗,要先例項化乙個qframe,然後在layout的建構函式傳入這個qframe,然後新增到父容器的時候新增這個qframe就行了,如下:

// ______________________________首頁容器_____________________________

qframe * firstpageframe = new qframe;

qvboxlayout * firstpagelayout = new qvboxlayout(firstpageframe);

firstpagelayout->setmargin(0);

firstpagelayout->addstretch(5);

firstpagelayout->addwidget(aboutframe);

firstpagelayout->addstretch(25);

firstpagelayout->addwidget(funcframe);

firstpagelayout->addstretch(30);

firstpagelayout->addwidget(logoframe);

firstpagelayout->addwidget(bottomframe);

firstpagelayout->addstretch(1);

// ______________________________頁面疊加容器_________________________________

qstackedlayout * stackedlayout = new qstackedlayout;

stackedlayout->addwidget(firstpageframe);

mui多頁面切換實現

方法一 但是此處有乙個關鍵點 必須 設定 tab 卡中href 頁面 id 屬性值 下。原理錨點 演示 方法 2 將每個頁面內容用 html 頁存放,用 js 將每個頁面鑲嵌到主頁面中。先將所有頁面隱藏再顯示出主頁面。記住此處要把 tab 中 href 位址改為你的子頁得位址,刪除子頁得mui co...

Qt學習筆記 動態切換語言

dipperkun的部落格 在編寫國際化程式的時候,很多情況下都是在系統啟動的過程中選擇語言,然後載入對應的地方語言翻譯檔案,實現語言的本地化。但是也會有使用者需要進行動態的語言切換 dynamic language switching 也就是在程式主體都執行起來後,需要改變語言的選項。而使用者不希...

QT介面切換

在開發桌面應用的時候,經常性的會在幾個介面之間切換 可以是區域性的,也可以是整個介面 以前我總是利用hide和show來完成 但是很缺乏動態的美感,使用者在使用的時候體驗不好 今天就來解決這個問題 下面進入正題 qpropertyanimation 在qt中使用這個類可以很容易的設定一般的動畫 qp...