qt學習筆記(六)之簡析物件樹

2021-08-26 10:29:44 字數 898 閱讀 3440

qt提供了一種機制,能夠自動、有效的組織和管理繼承自qobject的qt物件,這種機制就是物件樹。

qt物件樹在使用者介面程式設計上是非常有用的。它能夠幫助程式設計師減輕記憶體洩露的壓力。

比如說當應用程式建立了乙個具有父視窗部件的物件時,該物件將被加入父視窗部件的孩子列表。當應用程式銷毀父視窗部件時,其下的孩子列表中的物件將被一一刪除。這讓我們在程式設計時,能夠將主要精力放在系統的業務上,提高程式設計效率,同時也保證了系統的穩健性。

下面筆者將簡單分析物件樹。

1、程式執行後的除錯資訊:

dlg = qdialog(0x3ea1a0) btn =qpushbutton(0x3ea228)

關閉視窗後,

dlg = qdialog(0x3ea1a0)

這說明關閉視窗,不會銷毀該視窗部件,而是將其隱藏起來。

我們在qdebug() << "dlg = " << dlg;

之後加上

qdebug() << "btn = " << btn;

明顯的,我們之前已經delete btn,btn指標沒有被賦值為0,這是編譯器決定的。

執行程式後,必然出現段錯誤。

2、 將程式稍微修改下。

關閉視窗後,應用程式出現段錯誤了,這很好的說明了物件樹的機制。當銷毀了btn的父視窗部件,btn也會被銷毀。

3、物件樹對應的是父視窗部件和子視窗部件。像布局管理器新增部件是沒有把新增的部件加入到孩子列表

執行程式後,出現的除錯資訊如下

dlg children qpushbutton(0x3e98f8) qhboxlayout(0x3e9b28) layout children layout 的孩子列表是空的。

以上純屬個人學習筆記,如果**錯了,希望提出。願和大家一起共同學習,一起進步。我的郵箱位址是:[email protected]

qt學習筆記(六)之簡析物件樹

qt提供了一種機制,能夠自動 有效的組織和管理繼承自qobject的qt物件,這種機制就是物件樹。qt物件樹在使用者介面程式設計上是非常有用的。它能夠幫助程式設計師減輕記憶體洩露的壓力。比如說當應用程式建立了乙個具有父視窗部件的物件時,該物件將被加入父視窗部件的孩子列表。當應用程式銷毀父視窗部件時,...

Python學習筆記之exec函式簡析

個人部落格,支援一下唄!本文首發於ray s blog exec 函式的作用 動態執行python 也就是說exec 可以執行複雜的python 而不像eval 函式那樣只能計算乙個表示式的值。舉乙個簡單的小例子,如下 i 12 j 13 exec answer i j print answer i...

LWIP學習筆記 2 ARP簡析

arp分組格式 乙太網目的位址 mac 乙太網源位址 mac 幀型別硬體型別 協議型別 op傳送端目的位址 傳送端 位址 目的乙太網位址 目的 位址 6 位 62 2211 2646 4幀型別 請求 應答 此字段為0x0806 協議型別 arp請求,arp應答,rarp請求,4rarp應答 arp過...