我在组列表中创建了一组单选按钮,并将回调附加到这些按钮。代码如下:
回调函数:
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);
结果并不符合预期。我假设每当我单击其中一个单选按钮时,它都会启动回调,但似乎有时按钮“简单”会启动,有时按钮“困难”会启动。我可以说火灾事件是不一致的。我的实现是否不正确或缺少任何内容,或者切换仅适用于 2 个小部件或 2 个状态。
最佳答案
您需要在第一个单选按钮上使用 grp = gtk_radio_button_get_group(btn1);
来检索组。对于您想要共享一个标记
的所有其他按钮,请使用gtk_radio_button_set_grp (btn234_n, grp);
来自文档:
When an unselected button in the group is clicked the clicked button receives the "toggled" signal, as does the previously selected button. Inside the "toggled" handler, gtk_toggle_button_get_active() can be used to determine if the button has been selected or deselected.
关于c - GTK 单选按钮组无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386194/