Qt庫版本:5.2.1
Qt Creator版本:3.0.1
1 QSplitter的用途
QSplitter使得用戶可以通過拖動子窗口之間的邊界來控制它們的大小,例如
圖1 窗口拆分示意圖
2 QSplitter的添加方法
QSplitter的添加方法有2種:a)通過Qt Creator的界面設計工具添加;b)直接使用C++代碼添加。其中,方法a最為直觀和方便,本文將重點介紹這種方法,而方法b可以見參考資料[1]。
2.1 通過Qt Creator添加QSplitter控件
與Push Button等控件的添加方法不同,在“設計”視圖左側的控件列表中,並沒有對應的QSplitter控件,而是在上方面的工具欄中,如下圖紅色圈住的位置所示:
圖2.1 設置窗口拆分的按鈕
與上圖中左側的Push Button等控件的使用方法不同的是,QSplitter不可以直接使用拖放的方式將其添加到界面中。根據參考資料[2][3]的說明可知,使用QSplitter之前,需要先添加將被分裂的兩個控件,然后同時選中它們,這時候上圖的QSplitter按鈕變成可用狀態,點擊“水平分裂器”即可將它們進行水平的布局。
2.2 取消QSplitter
取消上述的分裂布局的方法是,同時選中已經被分裂的控件,然后點擊工具欄上方的“打破布局(B)”按鈕即可,如下圖所示:
圖2.2 取消窗口拆分的按鈕
3 動態改變子窗口大小
默認情況下,使用鼠標拖動分割子窗口間的邊界時,子窗口會動態的改變其大小。然而,如果希望在松開鼠標時才改變其大小,可以設置下面的參數,取消其勾選狀態即可:
4 子窗口最小尺寸
在拖動子窗口間的邊界線時,有時我們並不希望子窗口的寬度或者高度被縮小到零,因此可以設置子窗口的最小尺寸:
圖 4.1 子窗口屬性截圖
然而,就算是設置了上述值,還不行,還需要將下面的選擇去掉勾選狀態
圖4.2 QSplitter屬性截圖
5 子窗口比例
默認情況下,QSplliter中各個子窗口的大小等比例的,但是很多時候我們並不希望這樣,因此參考資料[5][6][7][8]都提到如何解決這個問題,但都是直接通過C++代碼的方式去實現的。這里主要介紹如何通過Qt Creator的“設計”界面來達到同樣的目的。
選中QSplitter中的子窗口,然后設置其sizePolicy屬性如下圖所示
圖5 縮放因子設置
分別將QSplliter中各子窗口的“水平伸展”值設置為非零的值。此值越大,表示對應的子窗口在QSplliter中的分割比例越大(分割效果要運行程序時才呈現出來)。
7 實例
學習Qt編程的一個很好的方法是學習其例程序。關於QSplitter的精彩例程有“chip”。
參考資料
[1]QSplitter 學習
[2]Using Layouts in Qt Designer
[7]QSplitter setStretchFactor 函數的理解
[8]QSplitter大小