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