Qt parent引數作用

2021-09-30 06:30:07 字數 790 閱讀 6501

這是一篇很簡單的文章,僅僅是用來說明一下乙個引數的作用,因此我把它寫成了tip,而不是接下來的17.

程式寫的多了,你會發現幾乎所有的qt類的建構函式都會有乙個parent引數。這個引數通常是qobject* 或者是 qwidget* 型別的。很多情況下它都會有乙個初始值0,因此,即便你不去給它複製也沒有絲毫的問題。於是,稍微偷懶一下,就會不自覺的忽略了這個引數。那麼,這個引數到底是幹什麼用的呢?

其實,這個引數有很多用處。就像它的名字一樣,這個引數指定了元件的父元件。對於乙個對話方塊來說,對話方塊一般是不作為頂層容器出現的,因此在工作列上一般是沒有對話方塊的位置的。怎麼指定這個對話方塊不是頂層容器呢?有父元件的元件不就不是頂層容器了嗎?因此,只要你指定對話方塊的parent屬性,工作列就不會出現它的身影。當然,如果你不指定,這個對話方塊就成為頂層容器了,工作列會給它留個位置的——利用這個特性,就可以實現特殊對話方塊可以在工作列出現的效果,比如「關於」對話方塊的出現。

另外比較通用,也是很重要的作用是,parent引數指明了元件的父元件,這樣,當父元件delete時,qt可以保證所有子元件——也就是parent指標指向這個元件的所有元件——都會被正確的delete掉。這是qt能夠幫助我們管理一部分記憶體的原因所在。qt是通過遍歷parent屬性來防止了這一部分記憶體洩漏的。因此,必要情況下還是不要忘記設定這個parent屬性。當然,如果你不宣告這個屬性,當整個程式關閉時,作業系統會**記憶體——因此我們所說的記憶體洩漏一般是指我們自己寫的應用程式的內部,而不會影響到整個作業系統——當然,如果你實現太可惡,作業系統也會受不了自動關掉你的程式的:-)

本文出自 「

豆子空間」 部落格,請務必保留此出處

property引數的作用

property是乙個屬性訪問宣告,擴號內支援以下幾個屬性 1,getter gettername,setter settername,設定setter與getter的方法名 2,readwrite,readonly,設定可供訪問級別 2,assign,setter方法直接賦值,不進行任何retai...

函式引數,作用域

def foo x,y,args,a 1,b,kwargs print x,y print args print a print b print kwargs foo 1,2,3,4,5,b 8,c 4,d 5 1 2 3,4,5 18 後定義的引數,必須被傳值 有預設值的除外 且必須按照關鍵字實參...

SetRenderState 中的引數作用說明

ddrs zenable 用於控制深度快取的狀態。它的狀態是用乙個列舉型別來表示的 d3dzb true d3dzb false和d3dzb usew。在d3d中z buffering 是對z軸上的資訊起作用,所以,如果你需要表示的是2d資訊的話,可以用pd3ddevice setrendersta...