当按下button时,会在label上显示hello world.
顺便把自己的测试贴出来:
代码: 全选
struct data_t
{
gpointer label;
gpointer win;
}data;
GtkWidget*
create_window (void)
{
GtkWidget *window;
GtkWidget *label;
GtkBuilder *builder;
GError* error = NULL;
builder = gtk_builder_new ();
if (!gtk_builder_add_from_file (builder, UI_FILE, &error))
{
g_warning ("Couldn't load builder file: %s", error->message);
g_error_free (error);
}
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
label = GTK_WIDGET(gtk_builder_get_object (builder, "label1"));
data.win = window;
data.label = label;
/* This is important */
gtk_builder_connect_signals (builder, &data);
g_object_unref (builder);
return window;
}
int
main (int argc, char *argv[])
{
GtkWidget *window;
#ifdef ENABLE_NLS
bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
#endif
gtk_set_locale ();
gtk_init (&argc, &argv);
window = create_window ();
gtk_widget_show (window);
gtk_main ();
return 0;
}
void
on_button1_clicked (GtkButton *self, gpointer user_data)
{
g_print("%p-%p\n", self, user_data);
struct data_t *data = (void *)self;
GtkLabel *label = data->label;
gtk_label_set_text (label, "hello,word\n");
//gtk_main_quit ();
}
不过这里的self好像跟glade中设置的用户数据没有关系,还要测试