Qt建構函式parent引數

2021-07-22 01:39:50 字數 908 閱讀 7742

public:

explicit

myaction(qobject *parent = 0);

protected:

qwidget* createwidget(qwidget *parent);

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

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

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

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

QT建構函式中 parent

文章僅僅是用來說明一下乙個引數的作用 程式寫的多了,你會發現幾乎所有的qt類的建構函式都會有乙個parent引數。這個引數通常是qobject 或者是 qwidget 型別的 定義新的類是通常首先初始化為0,在類的實現函式中賦值 很多情況下它都會有乙個初始值0,因此,即便你不去給它複製也沒有絲毫的問...

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

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

Qt函式作函式引數

類裡寫個要傳的函式 切記 函式一定要是靜態函式,前面加個static 如類名為 myobj 函式為 static void myfun int a,int b 自定義函式 函式為引數的函式 void fun void hh int,int hh 4,5 或者 void fun void myobj ...