QObjects以對象樹組織它們自己。當你創建一個QObject以另一個對象作為其父對象時,這個QObject被加入到其父對象的children()列表中,當父對象對被刪除時,其子對象也會被刪除。實踐表明這種組織方式非常適合GUI對象的特點與需要。舉例來說,一個QShortcut(鍵盤快捷鍵)是其相關窗口的孩子,因此當用戶關掉那個窗口時,這個快捷鍵也隨之刪除了。
QWidget,是所有屏幕可顯示的一切事物的基類,它擴展了這種父子關系。在這種關系下,孩子通常就是一個子窗口部件,也就是說,它被顯示在父窗口的坐標系中,會因為父窗口的邊界約束而被裁剪。舉例來講,當應用程序關閉一個消息框時,消息框會被刪除,消息框里的按紐與標簽也會被隨之刪除,這正是我們所想的,因為按鈕與標簽是消息框的孩子。
你也可以親自刪除孩子對象,這些子對象會與其父對象脫離關系。舉例來說,當用移除了一個工具欄,它導致應用程序刪除這個QToolBar 對象,這時這個工具欄的父對象QMainWindow察覺到了變化,會相應地重新配置其屏幕空間。
調試函數,QObject:dumpObjectTree()與QObject::dumpObjectInfo()非常有用,當一個應用程序行為怪異,讓你手足無措時,你應該想到也許需要它們幫忙。
有了以上知識后,你再看到了某些代碼只new出來一個對象,而不再delete的做法,就會心平氣和些了。
只有注冊用戶登錄后才能發表評論。 | ||
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
![]() |
||
相關文章:
|
||
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
|
||
|
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||
8 | 9 | 10 | 11 | 12 | 13 | 14 | |||
15 | 16 | 17 | 18 | 19 | 20 | 21 | |||
22 | 23 | 24 | 25 | 26 | 27 | 28 | |||
29 | 30 | 1 | 2 | 3 | 4 | 5 |
留言簿(35)
隨筆分類(78)
- Boost
- C++(14)
- DirectX
- gamebyro
- Lua(6)
- MFC(1)
- mmorpg
- OGRE(28)
- Python(2)
- Qt(23)
- ScaleForm
- Unreal Engine 3(1)
- Virtools(2)
- 雜記(1)
隨筆檔案(74)
- 2009年5月 (3)
- 2009年4月 (3)
- 2007年11月 (2)
- 2007年10月 (4)
- 2007年9月 (5)
- 2007年8月 (4)
- 2007年6月 (8)
- 2007年5月 (5)
- 2007年4月 (5)
- 2007年3月 (25)
- 2007年2月 (1)
- 2006年12月 (6)
- 2006年11月 (1)
- 2006年10月 (2)
文章檔案(5)
搜索
最新評論

- 1.?re: CString和string的互相轉換
- 沒必要這么復雜直接使用CStringA 定義字符串就可以了
- --焰
- 2.?re: CString和string的互相轉換
- 太給力了,這么簡單就解決了
- --張三
- 3.?re: CString和string的互相轉換[未登錄]
-
@King
在VS2008的Unicode編碼上不行 - --z
- 4.?re: Ogre3D嵌入Qt框架 之 小結
- 您好,最近在學習ogre,看到您這篇文章感覺寫的很好很強大,想學習學習。能把完整的源碼發一份嗎1124670369@qq.com。謝謝了
- --耿肖
- 5.?re: Ogre3D嵌入Qt框架 之 秀圖
- 您好,我是ogre初學者,請問能夠發一份完整的源碼嗎?我的郵箱是1124670369@qq.com
- --耿肖