1. 程式人生 > >Qt構造函數的參數:QObject *parent = Q_NULLPTR

Qt構造函數的參數:QObject *parent = Q_NULLPTR

操作系統 div bsp 內部 沒有 一個 就會 nbsp style

幾乎所有的Qt類的構造函數都會有一個parent參數。這個參數通常是QObject* 或者是 QWidget* 類型的。很多情況下它都會有一個初始值0,因此,即便你不去給它復制也沒有絲毫的問題。於是,稍微偷懶一下,就會不自覺的忽略了這個參數。那麽,這個參數到底是幹什麽用的呢? 其實,這個參數有很多用處。就像它的名字一樣,這個參數指定了組件的父組件。對於一個對話框來說,對話框一般是不作為頂層容器出現的,因此在任務欄上一般是沒有對話框的位置的。怎麽指定這個對話框不是頂層容器呢?有父組件的組件不就不是頂層容器了嗎?因此,只要你指定對話框的parent屬性,任務欄就不會出現它的身影。當然,如果你不指定,這個對話框就成為頂層容器了,任務欄會給它留個位置的——利用這個特性,就可以實現特殊對話框可以在任務欄出現的效果,比如“關於”對話框的出現。 另外比較通用,也是很重要的作用是,parent參數指明了組件的父組件,這樣,當父組件delete時,Qt可以保證所有子組件——也就是parent指針指向這個組件的所有組件——都會被正確的delete掉。這是Qt能夠幫助我們管理一部分內存的原因所在。Qt是通過遍歷parent屬性來防止了這一部分內存泄漏的。因此,必要情況下還是不要忘記設置這個parent屬性。當然,如果你不聲明這個屬性,當整個程序關閉時,操作系統會回收內存——因此我們所說的內存泄漏
一般是指我們自己寫的應用程序的內部,而不會影響到整個操作系統——當然,如果你實現太可惡,操作系統也會受不了自動關掉你的程序的:-)

本文出自 “豆子空間” 博客,請務必保留此出處http://devbean.blog.51cto.com/448512/214166

Qt構造函數的參數:QObject *parent = Q_NULLPTR