我一直在尝试在GtkBuilder对象中获取所有GtkWidgets的“名称”。
我设法通过gtk_builder_get_objects()
从构建器对象获取所有对象,并将它们存储在GSList中。
但是,当我在gobjects上使用gtk_widget_get_name()
时(我转换为GtkWidgets),我得到了通用名称,如“GtkWindow”和“GtkButton”,而不是“window1”或“button1”,它们显示在林间空地。
任何帮助都会 非常 赞赏,并且会让这位程序员 非常 感到高兴。
答案 0 :(得分:5)
我做的完全一样。我能够使用id=
文件中的.glade
字符串
gtk_buildable_get_name()
已指定为here。
注意:在2.20之前,GtkBuilder将构造小部件的“name”属性设置为“id”属性。在GTK + 2.20或更高版本中,您必须使用gtk_buildable_get_name()
代替gtk_widget_get_name()
来获取“id”,或在UI定义中设置“name”属性。
答案 1 :(得分:3)
为构建器设置的名称与GtkWidget
的名称不同。 GtkBuilder
维护一个内部哈希表,其名称设置在GtkBuilder UI definitions
中,来自文件或字符串(从中添加了构建器)和关联对象。它用于在调用gtk_builder_get_object ()
时检索对象。利用GtkWidget
的{{3}}属性。在"name"
中设置GtkBuilder UI definitions
属性,以设置GtkWidget
的名称,可以使用gtk_widget_get_name()
检索该名称。
希望这有帮助!