Skip to content

Instantly share code, notes, and snippets.

@sulincix
Last active November 22, 2023 12:09
Show Gist options
  • Save sulincix/6c4271fd92ecac08ec444ca7211e030d to your computer and use it in GitHub Desktop.
Save sulincix/6c4271fd92ecac08ec444ca7211e030d to your computer and use it in GitHub Desktop.
C g_signal_connect Passing data
#include <gtk/gtk.h>
typedef struct _a {
gchar* msg;
gint num;
} data;
void button_event(GtkWidget *widget, gpointer f) {
data *d = f;
g_print("%s %d\n", d->msg, d->num);
d->num++;
}
int main(int argc, char** argv){
// gtk init
gtk_init(&argc, &argv);
// create data
data d;
d.msg = "test";
d.num = 0;
// define widgets
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget *button = gtk_button_new();
// connect signal
g_signal_connect(button, "clicked", G_CALLBACK(button_event), &d);
// add container
gtk_container_add(GTK_CONTAINER(window), button);
// show_all
gtk_widget_show_all(window);
// run
gtk_main();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment