2011-10-06 26 views

回答

4

當調用Dummy對象析構函數時,它的基類QWidget析構函數也將被調用(通過C++),並且QWidget析構函數負責刪除其父對象爲此虛擬對象的所有小部件。也就是說,這個虛擬對象的每個孩子都會被自動刪除。

然後遞歸,所以所有孩子的孩子都被刪除。

因此,在關閉Qt應用程序時,需要手動刪除的只有QWidgets(好的,實際上是QObject),它們的父級爲0,即頂級級別。他們的破壞者會自動確保他們的孩子都被毀壞。

Qt namespace page所述,還有標誌Qt :: WA_DeleteOnClose。這個:

當小部件接受關閉事件時,讓Qt刪除這個小部件(參見QWidget :: closeEvent())。

不過我覺得這個標誌並不常用。所以一個很好的通用規則就是確保在應用程序關閉時刪除頂級窗口小部件。

相關問題