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

标签 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);

结果并不符合预期。我假设每当我单击其中一个单选按钮时,它都会启动回调,但似乎有时按钮“简单”会启动,有时按钮“困难”会启动。我可以说火灾事件是不一致的。我的实现是否不正确或缺少任何内容,或者切换仅适用于 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/

相关文章:

gtk - 如何在其绘制信号处理程序中获取 GtkDrawingArea 的无效区域

c - 寻求一些关于使用 GTK+ 和 Cairo C 语言显示网络摄像头图片的指导

c - gstack.c :14:3: error: unknown type name 'gqdata'

c - 如何访问 C 中结构中索引处的元素?

c++ - 设置 GTKEventBox 的大小

c - 保持用户环境变量执行 gksu

linux - 为 GTK 功能链接哪些库?

c - 使用 libcurl 创建独立的站点轮询程序

c - 为什么我可以将多个字符放入 char 类型的变量中?

c - 通过剥离未使用的代码来解决 undefined reference