布局管理器是qt提供的一種自動完成窗體布局的工具,減少我們的工作量並且很美觀!
基本的布局管理器有四種:horizontal, vertical, grid, 和form 布局管理器。這些在前面的例子都能看到是如何使用的。qt的幫助文件裡也有乙個專門講他們的例子:
basic layouts
。 qhboxlayout, qvboxlayout, qgridlayout,和qformlayout 都繼承自qlayout
。layouts
通過呼叫
addwidget
或者addrow
將視窗部件加入進去,
qwidget
及其子類都有乙個
setlayout
的成員函式,可以將我們的布局管理器設定進去,這樣就完成了布局。
經常要用到的三個布局部件 qhboxlayout水平布局 qvboxlayout垂直布局 qgridlayout**布局
qhboxlayout和qvboxlayout用法 基本相同:
vlayout->addwidget(w1); vlayout->addwidget(w2); ……
qgridlayout用法
layout->addwidget(widget,row,column,rowspan,columnspan);
layout->addlayout(layout,row,column,rowspan,columnspan);
(row,column):控制項佔據左上角的單元格位置 rowspan:控制項佔據的行數
columnspan:控制項佔據的列數(不寫預設為1) 控制項隨窗體伸縮 將布局與主窗體建立聯絡 layout=new qhboxlayout(this);
或者this->setlayout(layout);
layout->addstretch();
可伸縮的空間
layout->setalignment(qt::alignhcenter);//布局內控制項水平居中
layout->setspacing(10);//控制項間隔為10
layout->setmargin(10);//頁邊距為10
qt設計器中spacer控制項 以上在對控制項位置調整時常用
結合sizepolicy屬性控制布局管理中的控制項的尺寸自適應方式 也就是控制項隨主窗體伸縮方式(可自行增大或縮小)
qsizepolicy sizepolicy(qsizepolicy::expanding, qsizepolicy::expanding);//可自行增大和收縮
fixed:不能放大或縮小
minimum:不能小於sizehint尺寸,可放大(若設定了最大尺寸)
maximum:不能放大,可縮小到允許的最小尺寸(若setminimumsize(10,10)只能縮小到(10,10))
preferred:控制項的sizehint是他的hint,可以放大或縮小
比例因子的使用
例:布局中有左右兩控制項,右邊比左邊水平伸縮2倍 sizepolicy.sethorizontalstretch(1); sizepolicy.setverticalstretch(0); left->setsizepolicy(sizepolicy);
sizepolicy.sethorizontalstretch(2); sizepolicy.setverticalstretch(0); left->setsizepolicy(sizepolicy);
水平伸展比例(1,2) 垂直伸展比例(0,0)
布局顧名思義是對控制項的位置的整體規劃,每個控制項之間都存在著位置關係,所以改變控制項(移動、關閉)會破壞布局
結論:兩種方法結合使用,應該可以應對大部分介面布局
qt布局管理器入門
1.qt布局管理器的簡介 qtdesigner 是乙個視覺化的基於qt的使用者介面設計工具。用來生成 ui 定義檔案,而不考慮具體的語言。很好使用,掌握其中的布局管理是學習好qtdesigner的關鍵。布局管理器 在建立的視窗中,為了方便地管理其中的控制項,而誕生了布局管理器。將各種控制項按照實際需...
使用QT布局管理器
qt 布局管理介面 並茂是本文介紹的內容,先來看內容。今天來實現乙個溫度轉換器的介面。如下圖 水平布局管理器可以把它所管理的部件以水平的順序依次排開,例如上圖中中間的 centigrade 和 fahrenheit 兩段文字,就是水平排列的,這個時候就可以用水平布局管理器來實現。垂直管理器類似,它可...
qt之布局管理器
我們載入控制項的時候,我們可以用布局類來指定父視窗 然後widget可以直接載入布局類 qt的布局類 水平布局 qhboxlayout 垂直布局 qvboxlayout 柵格布局 qfromlayout 手動布局 常用介面 addwidget qwieget int row,int colunum,...