QT中的物件樹與物件擁有權

2021-04-21 22:46:02 字數 710 閱讀 4325

qobjects以物件樹組織它們自己。當你建立乙個qobject以另乙個物件作為其父物件時,這個qobject被加入到其父物件的children()列表中,當父物件對被刪除時,其子物件也會被刪除。實踐表明這種組織方式非常適合gui物件的特點與需要。舉例來說,乙個qshortcut(鍵盤快捷鍵)是其相關視窗的孩子,因此當使用者關掉那個視窗時,這個快捷鍵也隨之刪除了。

qwidget,是所有螢幕可顯示的一切事物的基類,它擴充套件了這種父子關係。在這種關係下,孩子通常就是乙個子視窗部件,也就是說,它被顯示在父視窗的座標系中,會因為父視窗的邊界約束而被裁剪。舉例來講,當應用程式關閉乙個訊息框時,訊息框會被刪除,訊息框裡的按紐與標籤也會被隨之刪除,這正是我們所想的,因為按鈕與標籤是訊息框的孩子。

你也可以親自刪除孩子物件,這些子物件會與其父物件脫離關係。舉例來說,當用移除了乙個工具欄,它導致應用程式刪除這個q******* 物件,這時這個工具欄的父物件qmainwindow察覺到了變化,會相應地重新配置其螢幕空間。

除錯函式,qobject:dumpobjecttree()與qobject::dumpobjectinfo()非常有用,當乙個應用程式行為怪異,讓你手足無措時,你應該想到也許需要它們幫忙。

有了以上知識後,你再看到了某些**只new出來乙個物件,而不再delete的做法,就會心平氣和些了。

來自:http://www.cppblog.com/yuanyajie/archive/2007/09/25/32854.html

Qt物件樹和擁有權

1 qt智慧型指標和qobject物件樹系統 父子系統 結合使用出現的問題 2 qt學習筆記 六 之簡析物件樹 一 物件模型 標準c 物件模型可以在執行時非常有效的支援物件正規化 object paradigm 但是它的靜態特性在一些問題領域中不夠靈活。圖形使用者介面程式設計不僅需要執行時的高效性,...

Qt之物件樹與所有權

qobjects在乙個物件樹中組織他們自己。當建立乙個qobject時,如果使用了其他物件作為其父物件,那麼,它就會被新增到父物件的children 列表中。這樣一來,當父物件被銷毀時,這個qobject也會被銷毀。事實表明,這個機制非常適合於管理gui物件。例如 乙個qshortcut 鍵盤快捷鍵...

8 Qt 之物件樹與所有權

所有視窗及視窗控制項都是從qwidget直接或間接派生出來的。當你建立乙個qobject物件時,可以通過建構函式的引數指定其父物件,此時父物件會把這個qobject物件會自動新增到其children 列表中。當父物件析構的時候,這個列表中的所有 子 物件也會被析構。當我們刪除某個子物件時,父物件會自...