layout是qt繪製介面時常用的布局管理器,分為以下四類:
1.qboxlayout
2.qgridlayout
3.qformlayout
4.qstackedlayout
其中qboxlayout,又分為qhboxlayout和qvboxlayout。
筆者常用其中的qhboxlayout、qvboxlayout以及qgridlayout
qt控制項在使用時,需要使用關鍵字new進行建立,或使用全域性變數。但是在控制項很多的情況下,大量的全域性變數會導致命名和管理的難度提公升,降低**的可讀性和維護性。因此推薦new。
學習過c++的同學都知道,每乙個new需要對應乙個delete去釋放記憶體,否則不斷地new會導致記憶體洩漏,程式無法正常執行。
但是qt提供了一種記憶體管理方式,不必使用delete去刪除控制項,那就是設定父視窗。每個控制項都可以設定乙個父視窗,在父視窗關閉的時候,qt會自動關閉這個視窗的所有子視窗,已經這些子視窗的子視窗……因此設定父視窗即為記憶體qt管理的關鍵點。
在利用qlayout進行視窗布局時,qlayout會自動設定被加入的控制項的父視窗
qhboxlayout toplayout;
qlabel *label1 =
new qlabel;
qlabel *label2 =
new qlabel;
toplayout-
>
addwidget
(label1)
;toplayout-
>
addwidget
(label2)
;setlayout
(toplayout)
;
只要最後將layout設定,則layout下所有的控制項將會被自動新增父視窗,父視窗即為設定布局為toplayout的視窗。 Qt基本布局 QLayout
qt提供了qhboxlayout類 水平排列布局 qvboxlayout類 垂直排列布局 qgridlayout類 網格排列布局 等基本布局管理。它們之間的繼承關係如下圖 布局中常用的方法有addwidget 和addlayout addwidget 方法用於加入需要布局的控制項 void addw...
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,方法...