Qt學習筆記 關於Qlayout的父視窗

2021-10-08 08:35:36 字數 927 閱讀 8693

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,方法...