QT建構函式中 parent

2021-08-17 05:21:19 字數 851 閱讀 9809

文章僅僅是用來說明一下乙個引數的作用

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

有了此引數,子類才會繼承父類在建構函式中初始化了的資料,否則,父類的初始化資料的建構函式不執行,無法繼承資料,如果吧資料定為私有的,又不便於類的通用繼承。

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

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

**:

Qt建構函式parent引數

public explicit myaction qobject parent 0 protected qwidget createwidget qwidget parent 程式寫的多了,你會發現幾乎所有的qt類的建構函式都會有乙個parent引數。這個引數通常是qobject 或者是 qwidg...

關於QT構造函式引數parent的解釋

比如說我在標頭檔案裡定義了乙個類 class paintwidget public qwidget 然後在cpp中寫 paintwidget paintwidget qwidget parent qwidget parent 意思是說,重定義父物件。如何重定義呢?看parent引數。當paintwi...

jQuery中parent與parents方法

在jquery中有兩個可以獲取父標籤的方法parent 和parents 二者的區別在於,parent 方法獲取的父標籤是距離呼叫者最近的父標籤,而parents 方法獲取的父標籤是包含呼叫者的所有父標籤組成的陣列。以下是 示例 首先用屬性選擇器選中form標籤中type為submit的input標...