Qt佈局之QStackedLayout

之前認識了QBoxLayout、QGridLayout和QFormLayout。接著來認識Qt佈局家族的成員QStackedLayout,集齊四種佈局就可以召喚神龍了。

前面三種佈局都是在同一個平面上對窗口部件佈局,而QStackedLayout可以看成是不同平面的佈局,就好像佈局的窗口是疊在一起的一樣,你(在默認的模式下)只能看到最上層的那一個窗口。這種特性很適合用來實現切換子界面的功能。

QStackedLayout基本用法

QStackedLayout的使用也很簡單,上栗子:

Qt佈局之QStackedLayout

QStackedLayout通過addWidget將部件添加到佈局,第一個添加到佈局的下標為0,第二個添加到佈局的下標為1,以此類推。還可以使用insertWidget將部件插入到中間。

要切換顯示的部件使用setCurrentIndex(傳入參數為下標),或者使用setCurrentWidget(傳入參數為部件的指針)。設置當前部件就是將該部件置於棧頂。上例的運行結果如下圖:

Qt佈局之QStackedLayout

需要獲取佈局中的部件指針可以使用widget(傳入下標),獲取當前部件指針使用currentWidget(),獲取當前下標使用currentIndex()。QStackedLayout的常用函數也就這麼多了。

關於StackingMode

QStackedLayout默認情況下只有一個部件可見,但是QStackedLayout還有一種模式是佈局中所有部件都可見,只不過currentWidget會被放在最上層。控制這個模式的屬性就是StackingMode,只有兩個取值StackOne和StackAll,顧名思義前者對應的是隻有一個可見,後者是全部可見。將上例中的模式設置為StackAll:

Qt佈局之QStackedLayout

為了看到效果將三個部件的寬度設置為不一樣的,否者最上層擋住了其他部件,看起來和StackOne是一樣的。程序運行效果如圖:

Qt佈局之QStackedLayout


分享到:


相關文章: