QStackedWidget及QStackedLayout使用方法

 QStackedLayout類把子控件進行分組或者分頁,一次只顯示一組或者一頁,隱藏其他組或者頁上的控件。QStackedLayout本身並不可見,對換頁也不提供本質的支持。圖6.5中的建頭和黑灰色的框架是Qt Designer提供爲了方便設計。爲了方便起見,Qt還提供了類QStackedWidget,這個類的佈局管理器爲QStackedLayout。
  
Figure 6.5. QStackedLayout
起始頁爲0。爲使某一個子控件可見,指定一個頁號,調用setCurrentIndex()。一個子控件的頁號有函數indexOf()得到。圖6-6是一個Preferences對話框,以它爲例說明QStackedLayout的用法。這個對話框的左邊是一個QListWidet控件,右邊爲一個QStackedLayout。QListWidget中的每一項對應QStackedLayout中的一頁。
下面是這個類的構造函數的代碼:

PreferenceDialog::PreferenceDialog(QWidget *parent)    : QDialog(parent){  
 ...   
listWidget = new QListWidget;  
listWidget->addItem(tr("Appearance"));  
listWidget->addItem(tr("Web Browser"));  
listWidget->addItem(tr("Mail & News"));  
listWidget->addItem(tr("Advanced"));   
stackedLayout = new QStackedLayout;   
stackedLayout->addWidget(appearancePage);   
stackedLayout->addWidget(webBrowserPage);   
stackedLayout->addWidget(mailAndNewsPage);   
stackedLayout->addWidget(advancedPage);   
connect(listWidget, SIGNAL(currentRowChanged(int)),           
stackedLayout, SLOT(setCurrentIndex(int))); 
 ...   
listWidget->setCurrentRow(0);
}
 
Figure 6.6. Two pages of the Preferences dialog
我們創建一個QListWidget,它的每一項爲一個控件頁的名字。然後我們創建一個QStackedLayout,調用addWidget()把每一頁的控件加入到佈局中。連接QListWidget的信號currentRowChanged(int)和QStackedLayout的函數setCurrentIndex(int)連接,改變QListWidget的當前項時換頁。最後調用QListWidget把開始頁設置爲0。這樣的對話框使用Qt Designer會更加簡單:
1.         用“Dialog”或者“Widget”模板創建一個窗體、
2.         在窗體上增加一個QListWidget和一個QStackedWidget控件。
3.         給每一頁添加子控件,子控件按佈局排列好(右擊QStackedWidget控件,選擇Insert Page菜單便可創建一個新頁。點擊右上角的左右鍵頭,可以在頁和頁之間切換)。4.         把QListWidget和QStackedWidget用水平佈局管理。
5.         連接QListWidget控件的currentRowChanged(int)信號和QStackedWidget控件的槽setCurrentIndex(int)。
6.         設置當前QListWidget控件的currentRow屬性爲0。在Qt Designer中預覽時,點擊列表控件中不同的項目,窗體就會換爲不同的頁。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章