我在组列表中创建了一组单选按钮,并附加了对按钮的回调。代码如下:
回调功能:
void set_game_level(GtkWidget *widget,gpointer user_data){
g_print("testing toggle");
}
功能显示设置:
GSList *group;
GtkWidget * levelButton;
levelButton = gtk_radio_button_new_with_label (NULL, "Easy");
gtk_container_add (GTK_CONTAINER (vbox2), levelButton);
group = gtk_radio_button_group (GTK_RADIO_BUTTON (levelButton));
levelButton = gtk_radio_button_new_with_label(gtk_radio_button_group (GTK_RADIO_BUTTON (levelButton)),
"Medium");
gtk_container_add (GTK_CONTAINER (vbox2), levelButton);
levelButton = gtk_radio_button_new_with_label(gtk_radio_button_group (GTK_RADIO_BUTTON (levelButton)),
"Hard");
gtk_container_add (GTK_CONTAINER (vbox2), levelButton);
gtk_signal_connect_object (GTK_RADIO_BUTTON (levelButton), "clicked", G_CALLBACK(set_game_level),NULL);
结果不符合预期。我会假设每当我点击其中一个单选按钮时,它都会启动回调,但似乎有时按钮" Easy"有时会按下按钮" hard"火了不知怎的,我可以说火灾事件是不一致的。我的实现是不正确的还是丢失了什么,或者切换只能处理2个小部件或2个状态。
答案 0 :(得分:0)
您需要在第一个单选按钮上使用grp = gtk_radio_button_get_group(btn1);
来检索组。对于您要共享一个marking
使用gtk_radio_button_set_grp (btn234_n, grp);
来自docbook:
单击组中未选中的按钮时,单击该按钮 收到"切换"信号,与之前选择的按钮一样。 内部"切换" handler,gtk_toggle_button_get_active()可以 用于确定是否已选择或取消选择按钮。