C GTK3-radiobutton:每次切换按钮时调用回调两次
我正试着用gtk3无线电按钮来跟着狂吠。问题是我注意到每次单击按钮时回调函数都会被调用两次。 我的问题是,当我点击一个单选按钮时,我为什么以及如何更改回调调用一次C GTK3-radiobutton:每次切换按钮时调用回调两次,c,callback,radio-button,gtk3,C,Callback,Radio Button,Gtk3,我正试着用gtk3无线电按钮来跟着狂吠。问题是我注意到每次单击按钮时回调函数都会被调用两次。 我的问题是,当我点击一个单选按钮时,我为什么以及如何更改回调调用一次 从切换按钮继承的切换信号在停用和激活时都会触发。当您选择单选按钮时,先前选择的按钮在第一次回调时被停用,而新按下的按钮激活第二次回调 如果只想过滤激活,请使用gtk_toggle_button_get_active在回调中获取切换按钮的状态 根据以下文件: #include <gtk/gtk.h> static void
从切换按钮继承的切换信号在停用和激活时都会触发。当您选择单选按钮时,先前选择的按钮在第一次回调时被停用,而新按下的按钮激活第二次回调 如果只想过滤激活,请使用gtk_toggle_button_get_active在回调中获取切换按钮的状态 根据以下文件:
#include <gtk/gtk.h>
static void foo(GtkWidget *widget, gpointer data)
{
char *id_radio = (char*)data;
g_print("%s\n", id_radio);
}
int main(int argc, char *argv[])
{
gtk_init(&argc, & argv);
GtkWidget *radio_1, *radio_2, *radio_3, *vbox, *window;
radio_1 = gtk_radio_button_new_with_label(NULL, "Radio 01");
radio_2 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(radio_1), "Radio 02");
radio_3 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(radio_1), "Radio 03");
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(window, "delete-event", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(GTK_TOGGLE_BUTTON(radio_1), "toggled", G_CALLBACK(foo), (gpointer)"1");
g_signal_connect(GTK_TOGGLE_BUTTON(radio_2), "toggled", G_CALLBACK(foo), (gpointer)"2");
g_signal_connect(GTK_TOGGLE_BUTTON(radio_3), "toggled", G_CALLBACK(foo), (gpointer)"3");
gtk_box_pack_start(GTK_BOX(vbox), radio_1, 1, 1, 0);
gtk_box_pack_start(GTK_BOX(vbox), radio_2, 1, 1, 0);
gtk_box_pack_start(GTK_BOX(vbox), radio_3, 1, 1, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}