QObjects以對象樹組織它們自己。當(dāng)你創(chuàng)建一個
QObject以另一個對象作為其父對象時,這個
QObject被加入到其父對象的children()列表中,當(dāng)父對象對被刪除時,其子對象也會被刪除。實踐表明這種組織方式非常適合GUI對象的特點與需要。舉例來說,一個
QShortcut(鍵盤快捷鍵)是其相關(guān)窗口的孩子,因此當(dāng)用戶關(guān)掉那個窗口時,這個快捷鍵也隨之刪除了。
QWidget,是所有屏幕可顯示的一切事物的基類,它擴展了這種父子關(guān)系。在這種關(guān)系下,孩子通常就是一個子窗口部件,也就是說,它被顯示在父窗口的坐標(biāo)系中,會因為父窗口的邊界約束而被裁剪。舉例來講,當(dāng)應(yīng)用程序關(guān)閉一個消息框時,消息框會被刪除,消息框里的按紐與標(biāo)簽也會被隨之刪除,這正是我們所想的,因為按鈕與標(biāo)簽是消息框的孩子。
你也可以親自刪除孩子對象,這些子對象會與其父對象脫離關(guān)系。舉例來說,當(dāng)用移除了一個工具欄,它導(dǎo)致應(yīng)用程序刪除這個
QToolBar 對象,這時這個工具欄的父對象
QMainWindow察覺到了變化,會相應(yīng)地重新配置其屏幕空間。
調(diào)試函數(shù),
QObject:
dumpObjectTree()與
QObject::
dumpObjectInfo()非常有用,當(dāng)一個應(yīng)用程序行為怪異,讓你手足無措時,你應(yīng)該想到也許需要它們幫忙。
有了以上知識后,你再看到了某些代碼只
new出來一個對象,而不再
delete的做法,就會心平氣和些了。
posted on 2007-09-25 20:36
清源游民 閱讀(2473)
評論(0) 編輯 收藏 引用 所屬分類:
Qt