GTK单选按钮组无法正常工作

时间:2014-03-13 17:22:07

标签: c gtk

我在组列表中创建了一组单选按钮,并附加了对按钮的回调。代码如下:

回调功能:

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个状态。

1 个答案:

答案 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()可以   用于确定是否已选择或取消选择按钮。