W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
這是一篇很簡單的文章,僅僅是用來說明一下一個參數(shù)的作用,因此我把它寫成了 tip,而不是接下來的17.
程序?qū)懙亩嗔?,你會發(fā)現(xiàn)幾乎所有的Qt類的構(gòu)造函數(shù)都會有一個 parent 參數(shù)。這個參數(shù)通常是QObject 或者是 QWidget 類型的。很多情況下它都會有一個初始值0,因此,即便你不去給它賦值也沒有絲毫的問題。于是,稍微偷懶一下,就會不自覺的忽略了這個參數(shù)。那么,這個參數(shù)到底是干什么用的呢?
其實,這個參數(shù)有很多用處。就像它的名字一樣,這個參數(shù)指定了組件的父組件。對于一個對話框來說,對話框一般是不作為頂層容器出現(xiàn)的,因此在任務欄上一般是沒有對話框的位置的。怎么指定這個對話框不是頂層容器呢?有父組件的組件不就不是頂層容器了嗎?因此,只要你指定對話框的 parent 屬性,任務欄就不會出現(xiàn)它的身影。當然,如果你不指定,這個對話框就成為頂層容器了,任務欄會給它留個位置的——利用這個特性,就可以實現(xiàn)特殊對話框可以在任務欄出現(xiàn)的效果,比如“關(guān)于”對話框的出現(xiàn)。
另外比較通用,也是很重要的作用是,parent 參數(shù)指明了組件的父組件,這樣,當父組件 delete 時,Qt 可以保證所有子組件——也就是 parent 指針指向這個組件的所有組件——都會被正確的 delete掉。這是 Qt 能夠幫助我們管理一部分內(nèi)存的原因所在。Qt 是通過遍歷 parent 屬性來防止了這一部分內(nèi)存泄漏的。因此,必要情況下還是不要忘記設(shè)置這個 parent 屬性。當然,如果你不聲明這個屬性,當整個程序關(guān)閉時,操作系統(tǒng)會回收內(nèi)存——因此我們所說的內(nèi)存泄漏一般是指我們自己寫的應用程序的內(nèi)部,而不會影響到整個操作系統(tǒng)——當然,如果你實現(xiàn)太可惡,操作系統(tǒng)也會受不了自動關(guān)掉你的程序的:-)
本文出自 “豆子空間” 博客,請務必保留此出處 http://devbean.blog.51cto.com/448512/194031
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: