2010-04-12 5 views
1

Question concernant GtkBuilder. Lorsque nous supprimons le pointeur du constructeur, celui-ci détruit-il tous les écrans/widgets créés par le constructeur?Est-ce que détruire GtkBuilder détruit tous les widgets créés?

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

Supposons que nous avons créé un écran à l'aide Glade/XML avec quelques 2-3 fenêtres top_level en elle

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

et généré pointeur GtkBuilder (comme ci-dessus) donc après la suppression de ce pointeur ne le supprime créé Windows ou devons-nous supprimer manuellement ces fenêtres?

Merci,
PP.

Répondre

2

De l'documentation:

A GtkBuilder contient une référence à tous les objets qu'il a construits et gouttes ces références quand il est finalisé. Cette finalisation peut provoquer la destruction des objets non-widget ou des widgets qui ne sont pas contenus dans une fenêtre de premier niveau. Pour toplevel windows construit par un constructeur, il est la responsabilité de l'utilisateur à appel gtk_widget_destroy() pour se débarrasser d'entre eux et tous les widgets qu'ils contiennent .

Donc, non, GtkBuilder ne le fait pas pour vous, vous devez le faire vous-même.

+0

Merci, donc je dois appeler 'gtk_widget_destroy()' sur toutes les fenêtres de haut niveau construites par builder, c'est ce que vous dites? – User7723337

+0

@PP: Oui, c'est ce que dit la documentation. – unwind

Questions connexes