在使用Form之前,需要將Form上的對象放置到布局中。這確保在應用程序中預覽或使用Form時,對象將正確顯示。在布局中放置對象還可以確保在調整窗體大小時它們也能正確調整大小。
應用和打斷布局
管理對象的最簡單方法是對一組現有對象應用布局。通過選擇需要管理的對象並使用主工具欄、菜單或上下文菜單應用到標准布局來實現的。
一旦將窗體/控件(widgets)插入到布局中,就不可能單獨移動和調整它們的大小,因為布局本身控制着其中每個控件的幾何形狀,並考慮到spacers提供的提示。在這中情況下,您必須打破布局並手動調整每個對象的幾何形狀,或者通過調整布局大小來影響控件的幾何形狀。
要打破布局,請按選中布局並按住Ctrl+0(注意是0)或從窗體的上下文菜單、窗體菜單或主工具欄中選擇break layout。還可以從布局中添加和刪除間隔符(spacers),以影響小部件的幾何形狀。
在對象中插入布局
將對象插入到現有布局可以通過拖拽實現,在拖拽的時候,布局中會顯示一個藍色光標,以指示對象將被添加到何處。
如圖在Button3拖拽到Button2下面時,會顯示藍色光標,這是放開左鍵,Button3就會放置到Button2下面
設置頂層布局
可以通過清除選擇(單擊窗體上的鼠標左鍵)並應用布局來設置窗體的頂層布局。頂層布局是確保控件在窗口調整大小時能夠正確調整大小。要檢查是否設置了頂層布局,預覽widget並嘗試通過拖動來調整窗口的大小。
在上圖中如果我們沒有設置頂層布局,那么在預覽的時候三個按鍵的大小不會隨者窗口的改變而改變。我們觀察右側,會發現有個紅色圓圈標識。
空白處右鍵Lay out->隨便選擇一種布局,紅色圓圈標識消失,並且預覽后你會發現button的大小會隨者窗體大小而變化
布局選擇——可以通過Qt Designer左邊的控件盒子(Widget Box->Layouts)
或者右鍵
垂直和水平布局
在窗體上排列對象的最簡單方法是將它們放置在水平或垂直布局中。水平布局確保內部小部件水平對齊;垂直布局確保它們垂直對齊。水平和垂直布局可以組合和嵌套到任何深度。但是,如果您需要對對象的位置有更多的控制,最好使用網格布局(grid layout)。
網格布局(Grid Layout)
復雜的表格布局可以通過在網格布局中放置對象來創建。這種布局讓表單設計人員可以更自由地在表單上安排小部件,但會導致更不靈活的布局。然而,對於某些形式布局,網格布局比水平和垂直布局的嵌套布局更適合。
拆分器布局(Splitter Layouts)
管理窗體上對象布局的另一種常見方法是將它們放在拆分器中。這些分配器以與正常布局相同的方式水平或垂直地排列對象,但也允許用戶調整分配給每個對象的空間數量。
盡管QSplitter是一個容器控件,但Qt Designer將splitter對象視為應用於現有控件的布局。要將一組控件放到splitter中,請按此處描述的方式選擇它們(控件放置好后,空白處點擊右鍵拖動到控件另一邊的空白處選擇控件,然后右鍵),然后使用適當的工具欄按鈕、鍵盤快捷方式或布局上下文菜單項應用splitter布局。
表單布局(Form Layout)
從Qt4.4開始,又加入了一個layout類——QFormLayout。這個類以兩列的形式管理小部件;左列包含標簽,右列包含控件,如line edits, spin boxes等。QFormLayout類遵循各種平台外觀指導原則,支持對長行進行包裝。
快捷鍵
除了標准的工具欄和上下文菜單項之外,還有一組鍵盤快捷方式,用於在控件上應用布局。
Layout Shortcut Description
Horizontal Ctrl+1 Places the selected objects in a horizontal layout.
Vertical Ctrl+2 Places the selected objects in a vertical layout.
Grid Ctrl+5 Places the selected objects in a grid layout.
Form Ctrl+6 Places the selected objects in a form layout.
Horizontal splitter Ctrl+3 Creates a horizontal splitter and places the selected objects inside it.
Vertical splitter Ctrl+4 Creates a vertical splitter and places the selected objects inside it.
Adjust size Ctrl+J Adjusts the size of the layout to ensure that each child object has sufficient space to display its contents. See QWidget::adjustSize() for more information.
————————————————
版權聲明:本文為CSDN博主「JAMO_WOO」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/jxwzh/article/details/81673223