2011-11-25 19 views
6

GtkBuilder nesnesindeki tüm GtkWidgets öğelerinin "isimlerini" almaya çalışıyorum.GtkBuilder ve "adlar"

Tüm nesneleri oluşturucu nesnesinden gtk_builder_get_objects() aracılığıyla almayı ve bunları bir GSList'te saklamayı başardım. Ben, (i GtkWidgets için dökme) gobjects üzerinde gtk_widget_get_name() kullandığınızda

Ancak, böyle "GtkWindow" yerine "Window1" veya glade görüntülenen "button1" nin "GtkButton" gibi genel isimler olsun.

Herhangi bir yardım son derece takdir olurdu ve bu programcı çok mutlu ederdi.

+0

Burada, GObject iç gözlemi ile Python için aynı soru var: http://stackoverflow.com/q/15393120/247696 – Flimm

cevap

3

Oluşturucu için ayarlanan adlar, GtkWidget'un adıyla aynı değildir. GtkBuilder, dosya veya dize (oluşturucunun eklendiği) ve ilişkili nesneden GtkBuilder UI definitions'da ayarlanmış bir ada sahip dahili bir karma tablo sağlar. gtk_builder_get_object() çağrıldığında nesneleri almak için kullanılır. GtkWidget'un "name" özelliğini kullanın. gtk_widget_get_name() kullanılarak alınabilecek GtkWidget adını ayarlamak için GtkBuilder UI definitions"name" özelliği ayarlayın.
Bu yardımcı olur umarım!

+0

Çok teşekkür ederim. Demek istediğim, teşekkür ederim. Konu dışı: gtkbuilder sayfası, iki ayrı "ad" özelliğinin bulunduğunu söylemedi veya vurgulamadı. Glade ve gtkbuilder ile ilgili daha iyi bilgileri nereden alabileceğimi biliyor musunuz? – seininn

+1

@seininn: Rica ederim! Peki ['GTkBuilder' sayfa] (http://developer.gnome.org/gtk/2.24/GtkBuilder.html), adın, ilişkilendirilmiş' GtkWidget' öğesinin özelliği olduğunu asla söylemez. UI açıklamasında kendilerine atanan adı yazıyor. Bu yüzden, "GtkWidget" ile ilişkili "isim" özelliği, ayarlanmış olan değil, bir tanımlayıcıdır. Bence bunu karıştırdınız :) ... Bence çevrimiçi belgeler ve forumlar glade ve GtkBuilder –

4

Ben de aynı şeyi yapıyorum. id= dizelerini, here belirtildiği gibi kullanarak .glade dizesinden elde edebildim.

Not: GtkBuilder, 2.20'den önce, "id" özniteliğine yapılandırılmış pencere öğelerinin "name" özelliğini ayarlıyordu. GTK + 2.20 veya daha yeni sürümlerde, "id" değerini elde etmek için gtk_widget_get_name() yerine gtk_buildable_get_name() kullanmanız veya UI tanımınızda "name" özelliğini ayarlamanız gerekir.

+0

için düşünebildiğim en iyi kaynaktır. Perl: $ widget-> get_name() çağrılarını kullananlara Not gtk_widget_get_name(). Gtk_buildable_get_name() öğesini aramak için şunu kullanın: $ name = Gtk3 :: Buildable :: get_name ($ widget) – TheAmigo

İlgili konular