Qt基本布局 QLayout

2022-03-11 21:18:14 字數 1393 閱讀 9923

qt提供了qhboxlayout類(水平排列布局),qvboxlayout類(垂直排列布局),qgridlayout類(網格排列布局)等基本布局管理。它們之間的繼承關係如下圖

布局中常用的方法有addwidget()和addlayout()

addwidget()方法用於加入需要布局的控制項

void addwidget

( qwidget *widget, //需要插入的控制項物件

int fromrow, //插入的行

int fromcolum, //插入的列

int rowspan, //表示占用的行數

int columspan, //表示占用的列數

qt::alignment alignment=0 //描述各個控制項的對齊方式

)

addlayout()方法用於加入子布局

void qgridlayout::addlayout

( qlayout *layout, //表示需要插入的子布局物件

int row, //插入的起始行

int column, //插入的起始列

int rowspan, //表示占用的行數

int columspan. //表示占用的列數

qt::alignment alignment = qt::alignment() //指定對齊方式

)

注意1

leftlayout=new qgridlayout();  //由於leftlayout布局管理器不是主布局管理器,所以不用指定父視窗

qgridlayout *mainlayout=new qgridlayout(this); //mainlayout實現主布局,所有要指定父視窗

注意2qhboxlayout預設採取的是以自左向右的方式順序排列插入控制項或子布局,也可以通過setdirection()方法設定排列的順序,如

toprightlayout->setdirection(qboxlayout::righttoleft);
qvboxlayout預設採取的是以自上而下的方式順序插入控制項和子布局,也可以通過呼叫setdirection()方法設定排列的順序

注意3

qhboxlayout是水平布局,可以設定水平各個控制項之間的間距

toprightlayout=new qhboxlayout();

toprightlayout->setspacing(20); //設定各個控制項之間的間距為20

QLayout動態布局 清空布局

新寫的程式需要動態的改變視窗數量,需要清理原有視窗。在windows下寫好 後放入linux下崩潰。檢視qt文件才發現是寫法不規範的問題。先直接擺最終寫法 qlayoutitem item mainlayout takeat 0 while item 0 item mainlayout takeat...

Qt學習 布局管理器QLayout類

常用的布局管理有qvboxlayout,qhboxlayout,qgridlayout。下面是綜合應用 新建qt gui程式,基類為dialog 標頭檔案 view plain copy to clipboard print?ifndef dialog h define dialog h inclu...

QT刪除QWidget或QLayout下的控制項

最近做了乙個功能,點選按鈕新建控制項,再次點選需要刪除上一次的結果,重新新建控制項,如圖 設定引數,第一次點選分類按鈕 更改引數,第二次點選分類按鈕 試了很多方法都不行,update repaint 均沒有效果,簡單的移除layout也不管用,後來發現問題在於前一次建立的控制項沒有delete,方法...