一、堆疊窗口簡介
StackedWidget堆疊窗口部件爲一系列窗口部件的堆疊,對應類爲QStackedWidget。QStackedWidget類對應部件爲放在堆棧中的多個窗口部件,這些放在堆棧中的窗口部件在界面上只能看到一個窗口。
如果不好理解的話,老猿覺得用QTabWidget選項窗部件做個對比就好理解了。
我們知道,QTabWidget選項窗部件是多個頁面窗口組成的,每次用戶選擇其中一個選項卡時即顯示對應的選項窗,未選中的選項窗不顯示,但用戶可以在選項卡欄上看到對應選項窗的選項標籤。而QStackedWidget的堆疊窗口,在外觀上可以看成一個隱藏了選項卡欄的QTabWidget選項窗部件,當前頁面展示出來,其他頁面被隱藏。
由於沒有選項卡欄,StackedWidget堆疊窗口部件當前顯示的頁面只能通過代碼進行頁面切換,例如通過QComboBox或QListWidget存儲對應頁面的標題供人選擇,然後根據選擇結果將對應頁面設置爲當前頁面。
二、屬性
2.1、概述
在Designer中StackedWidget堆疊窗口部件非常簡單,只有2個,如下:
除了這2個屬性外,還有個未在Designer中設置的動態屬性count。
2.2、currentIndex屬性
currentIndex屬性保存堆疊窗口部件的當前窗口的索引。如果沒有當前窗口,則當前索引爲-1。默認情況下,此屬性值爲-1,因爲堆最初爲空。在Designer中,部件設計拖拽到頁面時,會初始化2個頁面,此時currentIndex初始值爲0。
可以通過currentIndex()和setCurrentIndex(int index)方法訪問該屬性,噹噹前頁切換時,會發射currentChanged(int index)信號,參數爲新的當前頁索引。
2.3、currentPageName屬性
StackedWidget堆疊窗口部件的currentPageName屬性,在對應類QStackedWidget中並沒有該同名屬性,實際上該屬性是StackedWidget中當前頁面窗口對應部件的名字,通過部件的objectName屬性訪問。
相關訪問示例代碼如下:
self.page_10 = QtWidgets.QWidget()
self.page_10.setObjectName("page_10")
self.stackedWidget.addWidget(self.page_10)
2.4、count屬性
count屬性保存了堆疊窗口部件中的窗口數量,可以使用count()訪問。