qt下的指標自動刪除問題

2021-05-12 07:30:17 字數 649 閱讀 5536

qt下,在刪除q類(qobject繼承類)指標或q類物件在析構的時候,同時會刪除或析構他的子物件,這裡的父子關係不是指繼承關係,而是指構造時在建構函式的引數中指定的父類,或通過setparent()函式指定的父類。

qobject中的d_ptr指標中含有豐富的資訊,其中包括父物件指標,及子物件,子子物件,子子子物件..構成的鍊錶。q類在構造的時候或setparent()函式中夠成的父子關係都被儲存在這些資訊中,在刪除q類物件指標或類物件在析構的時候,會根據這些資訊,同時刪除或析構他的子物件,子子物件,直到刪除到鍊錶結尾。

例1:刪除parent時,child1和child2也會被刪除。

qobject *parent = new qobject ;

qobject *child1 = new qobject(parent) ;//child1是parent的子物件

qobject *child2 = new qobject(child1) ;//child2是child2的子物件,是parent的子子物件。

delete parent;

例2:parent是繼承於qobject的類,child是parent的成員變數,parent在析構的時候就不需要再刪除指標child。

parent::parent()

parent::~parent()

QT刪除QWidget或QLayout下的控制項

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

Qt動態介面 控制項刪除問題

在專案中遇到要實現乙個動態資訊展示ui,so,需要動態刪除控制項 結構體儲存所有新建控制項並標識序列號 m nsequence struct cstinfo int m nsequence qgridlayout m pgridlayout qlabel m ptasknamelabel 任務名稱標...

Ubuntu下QT安裝問題

在ubuntu下安裝完成qt之後,執行bin目錄下的qtconfig發現qt字型選項很少,能顯示中文字型的只有宋體和仿宋,且這兩種字型在顯示比11號小的中文時,中文只顯示一半,從網上查詢資訊,說是在配置時加上fontconfig選項,記錄下來。qt編譯流程 1 解壓並進入解壓後的資料夾 2 conf...