QT 對象樹的概念

在Qt裏面,半存在着垃圾回收機制,不過不是系統自己執行的,是需要使用者自己去綁定的。

從QObject繼承下來的控件,在初始化的時候都可以爲其指定一個QObject *parent的指針,這個指針的作用就是指定它是那個控件下面的子控件。這個時候,Qt就會把這個控件添加到parent的children()列表中;當parent執行析構操作的時候,會自動逐個析構children()列表中的控件,達到一個不是很自動化的垃圾回收的機制;子控件進行析構的時候,會自動將自己從父類的children()列表中將自己移除,防止程序崩潰。

比如

僞代碼
parent = QWidget
QPushButton(parent)

delete parent的時候,QPushButton也會被自動釋放,這裏就需要使用者小心,避免因爲錯誤制定parent而導致控件無端被析構;當然了,比較穩妥的方式就是自己在析構函數裏面逐個釋放。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章