2011-02-01 98 views
4

我是QT的新手。我試圖通過嘗試實現下面看到的這個小窗口來理解佈局機制。它在QWidget下面是主窗口下的元素:QT佈局 - 初始方向

  1. 一個大QWidget在所有客戶區域上延伸。
  2. 窗口頂部的兩個QWidget容器。兩者應該有相同的高度,但正確的一個水平延伸,隨着窗口的增長/收縮。
  3. 右上角的一個按鈕容器小部件,具有固定的高度和寬度
  4. 大型QWidget容器填充客戶區域的其餘部分,應調整窗口大小。

父窗口本身是可調整大小的。

我正在尋找提示,我應該使用什麼佈局。我如何實現這個編程?定義什麼自動延伸,什麼與修正尺寸保持一致?以及如何將比例保持在需要保留的位置。

我會很感激你可能有的任何指針。

What I'm trying to achieve

回答

3

最簡單的,恕我直言最好的方式來完成,這是通過QHBoxLayout,負責和QVBoxLayouts。你可以通過QtCreator中的設計者來做到這一點,但是如果你需要隨着時間的推移來調整它,我發現它不能很好地工作。如果它是一組靜態小部件,我建議使用QtCreator設計器來設計它,因爲它會大大簡化您的生活。

如果你打算以編程方式做,主窗口應該設置爲使用QVBoxLayout,然後設置兩個子QVBoxLayout,其中底部的窗口被配置爲獲取任何可以獲得的空間。然後在頂部的QVBoxLayout中,添加一個QHBoxLayout和你的兩個上面的組件。

+0

謝謝。我明白,佈局對象中的單個項目會自動佔據整個佈局的大小。你如何設定兩個項目的面積利用率?比如說你想要一個人是固定的,另一個是可伸縮的,或者是一個40%,另一個是60%。我無法找到用於此的「關鍵字」。不是從API的角度來看,甚至是在QT-Desitner GUI中。 – JasonGenX 2011-02-01 17:29:47

3

要在代碼中將小部件設置爲固定大小,請在小部件上調用setFixedSize(int h,int w)。要在Designer中執行此操作,請單擊該小部件並查看QWidget部分中的屬性編輯器。打開sizePolicy thingy並設置水平和/或垂直固定。然後打開幾何圖形並設置寬度和高度。

要使它們在代碼中以不同比例拉伸,請在使用框佈局時使用單獨的參數。例如layout-> addWidget(button1,1); layout-> addWidget(button2,2);這會導致button2以按鈕1的速率的兩倍展開。要在設計器中執行此操作,請打開窗口小部件的sizePolicy屬性並設置Horizo​​ntalStrech和/或VerticalSretch。請注意,在這種情況下,您需要設置尺寸策略的方向不是固定的。它也不會讓一個小部件縮小到最小尺寸以下(它會比縮小比例太小)。