2010-04-12 180 views
1

關於GtkBuilder的問題。 當我們使用unref構建器指針時,它會銷燬構建器創建的所有屏幕/小部件?銷燬GtkBuilder是否銷燬所有創建的小部件?

if(builder_ptr) 
    g_object_unref(G_OBJECT(builder_ptr)); 

假設我們已經創建了使用沼地/ XML一些2-3 TOP_LEVEL窗口在一個屏幕中它

gtk_builder_add_from_file(builder_ptr, "Test.glade", &error) 

和產生GtkBuilder指針(如上述),因此刪除該指針不它刪除創建後Windows還是我們需要手動刪除這些窗口?

謝謝,
PP。

回答

2

documentation

一個GtkBuilder保存到已建造和 降低這些引用時,它是 完成所有 對象的引用。此最終化可能導致銷燬非小部件對象 或不包含在頂層窗口中的 中的小部件。頂層 由構建者構建的窗口,其 是用戶對 的責任調用gtk_widget_destroy()以去掉 以及它們包含的所有小部件。

所以,不,GtkBuilder不會爲你做這個,你必須自己做。

+0

謝謝,所以我必須在每個由構建器構建的頂級窗口上調用'gtk_widget_destroy()',這就是你所說的? – User7723337 2010-04-13 05:02:14

+0

@PP:是的,這就是文檔所說的。 – unwind 2010-04-13 07:08:12