我在 GtkEventBox 中有一个 GtkImage,在 glade 上定义
<object class="GtkEventBox" id="eb_paciente">
<signal name="button-press-event" handler="print_filepath" object="bt_icn_paciente" swapped="no"/>
<child>
<object class="GtkImage" id="bt_icn_paciente">
<property name="pixbuf">img/patient_icons/icon_patient.png</property>
</object>
</child>
</object>
我要做的是在单击 EventBox 时更改图像路径。
我在创建硬编码的事件框之前就这样做了,并且工作起来就像一个魅力。但现在我无法获得“文件”属性。我已经尝试了两种方法,使用g_object_get
and g_object_get_property
,但我总是得到一个 NULL 对象作为响应,而不是文件名。
这是我的代码
gboolean print_filepath(GtkWidget *widget, GdkEvent *event, gpointer *data){
GValue value = G_VALUE_INIT;
g_value_init (&value, G_TYPE_STRING);
g_object_get_property(G_OBJECT(gtk_bin_get_child(GTK_EVENT_BOX(widget))), "file", &value);
g_print("\n print_filepath = %s\n", g_value_get_string(&value));
gchar *filepath;
g_object_get(G_OBJECT(data), "file", &filepath, NULL);
g_print("\n print_filepath = %s\n", filepath);
g_free(filepath);
return FALSE;
}
我在互联网上进行了深入搜索,但一无所获。我试图找出另一种解决方案来实现我想要的,但我不知道该怎么做。我将不胜感激任何帮助或建议。单击事件框时如何更改图像文件?非常感谢!