用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...