Glade, GtkBuiler или Gtk неожиданно поменяли местами обработчик сигналов - PullRequest
0 голосов
/ 08 мая 2011
void
add_button_clicked(GtkButton * widget, GtkTreeView * treeview){
    printf("%s\n",G_OBJECT_TYPE_NAME(widget));
}   // Prints GtkTreeView

В то время как стандартный сигнал GtkButton: clicked должен работать по этой причине (за самим виджетом следуют пользовательские данные) по какой-то причине, здесь был вызван обработчик поменянного сигнала, и два параметра смешаны.

Я мог бы просто немного перемешать код, чтобы обойти это, но я хотел бы докопаться до , почему это происходит, чтобы я мог исправить / предотвратить это.

Флажок «Смена поляны» снят, и я нигде не подключал сигнал вручную, поэтому не знаю, почему это происходит.

Редактировать: Хорошо, теперь это происходитко всем моим обратным вызовам, что является огромной огромной проблемой!Пожалуйста, помогите!

Редактировать: Эта «особенность», по-видимому, здесь, поэтому пользователи glade могут добавить объект glade к обратному вызову и напрямую обратиться к функции gtk, чтобы они могли, например, скрыть виджетбез необходимости писать ни одной строки кода.Я буду катиться с этим.

1 Ответ

0 голосов
/ 10 мая 2011

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

...