GtkBuilder和“名字”

时间:2011-11-25 00:29:03

标签: c gtk gtkbuilder

我一直在尝试在GtkBuilder对象中获取所有GtkWidgets的“名称”。

我设法通过gtk_builder_get_objects()从构建器对象获取所有对象,并将它们存储在GSList中。

但是,当我在gobjects上使用gtk_widget_get_name()时(我转换为GtkWidgets),我得到了通用名称,如“GtkWindow”和“GtkButton”,而不是“window1”或“button1”,它们显示在林间空地。

任何帮助都会 非常 赞赏,并且会让这位程序员 非常 感到高兴。

2 个答案:

答案 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()检索该名称。
希望这有帮助!