Как реализовать сигнал события объекта Glade - GTK3 - PullRequest
0 голосов
/ 23 марта 2020

Как реализовать сигнал элемента Glade и передать структуру или некоторый аргумент функции обработчику? У меня есть скелет моего GUI приложения, созданного с использованием Glade. Сигналы в этом скелете не реализованы (потому что в Glade вы не можете передать более одного виджета в функцию обработчика событий, и мне это не нравится, я хочу передать структуру и что-то еще) Далее я вынимаю каждый элемент, который мне нужен с

lower_button = GTK_WIDGET(gtk_builder_get_object(builder, "lower_button"));

И здесь у меня есть проблема, мне нужно обработать каждый сигнал самостоятельно (отдельно) и передать функции обработчику, много-много вещей, ну, например, структуру в котором хранятся виджеты других элементов.

Если бы я не использовал Glade объектов, я бы сделал это так:

void click_func(GtkWidget *lower_button, struct Main *p)
{
  printf("%p\n", p -> entry);
}

g_signal_connect(G_OBJECT(lower_button), "clicked", G_CALLBACK(click_func), &my_struct);

Но по какой-то причине я не могу используйте функцию g_signal_connect для строителя, возникают ошибки ... Итак, вопрос в том, как создать сигнал для объекта, который я вынимаю из поляны скелета, и передать все аргументы там по-человечески? Я прочитал https://developer.gnome.org/gtk3/stable/GtkBuilder.html#gtk -builder-connect-сигналы и мне, вероятно, нужна функция gtk_builder_connect_signals_full, но я никогда не видел примеров реализации на Inte rnet.

...