1. 程式人生 > >【Qt開發】QSplitter的使用和設定

【Qt開發】QSplitter的使用和設定

 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”。

參考資料