C 如何检查GTK中是否选择了单选按钮
我正试图用C语言在GTK中创建一个GUI。我想要有单选按钮,但我不知道如何确定选择了哪个C 如何检查GTK中是否选择了单选按钮,c,radio-button,gtk,C,Radio Button,Gtk,我正试图用C语言在GTK中创建一个GUI。我想要有单选按钮,但我不知道如何确定选择了哪个 #include <glib.h> #include <gtk/gtk.h> static gboolean close_application( GtkWidget *widget, GdkEvent *event, gpointer
#include <glib.h>
#include <gtk/gtk.h>
static gboolean close_application( GtkWidget *widget,
GdkEvent *event,
gpointer data )
{
gtk_main_quit ();
return FALSE;
}
static void btn_selected()
{
//pop-up message; left empty for now
}
int main( int argc,
char *argv[] )
{
GtkWidget *window = NULL;
GtkWidget *box1;
GtkWidget *box2;
GtkWidget *button;
GtkWidget *separator;
GSList *group;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "delete-event",
G_CALLBACK (close_application),
NULL);
gtk_window_set_title (GTK_WINDOW (window), "radio buttons");
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
box1 = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), box1);
gtk_widget_show (box1);
box2 = gtk_vbox_new (FALSE, 10);
gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
gtk_widget_show (box2);
button = gtk_radio_button_new_with_label (NULL, "button1");
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
gtk_widget_show (button);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
button = gtk_radio_button_new_with_label (group, "button2");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
gtk_widget_show (button);
button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button),
"button3");
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
gtk_widget_show (button);
separator = gtk_hseparator_new ();
gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
gtk_widget_show (separator);
box2 = gtk_vbox_new (FALSE, 10);
gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
gtk_widget_show (box2);
button = gtk_button_new_with_label ("close");
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (close_application),
window);
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
gtk_widget_set_can_default (button, TRUE);
gtk_widget_grab_default (button);
gtk_widget_show (button);
//This button will call the btn_selected method when clicked
button = gtk_button_new_with_label("selected");
g_signal_connect(button,"clicked",G_CALLBACK (btn_selected),NULL);
gtk_box_pack_start(GTK_BOX(box2),button,TRUE,TRUE,0);
gtk_widget_show(button);
gtk_widget_show (window);
gtk_main ();
return 0;
}
#包括
#包括
静态gboolean关闭应用程序(GtkWidget*小部件,
GdkEvent*事件,
gpointer数据)
{
gtk_main_quit();
返回FALSE;
}
所选静态无效btn_()
{
//弹出消息;暂时留空
}
int main(int argc,
字符*argv[]
{
GtkWidget*窗口=NULL;
GtkWidget*框1;
GtkWidget*第2框;
GtkWidget*按钮;
GtkWidget*分离器;
GSList*组;
gtk_init(&argc,&argv);
窗口=gtk_窗口_新建(gtk_窗口_顶层);
g_信号连接(窗口,“删除事件”,
G_回调(关闭_应用程序),
无效);
gtk_窗口设置标题(gtk_窗口(窗口),“单选按钮”);
gtk_容器_设置_边框_宽度(gtk_容器(窗口),0);
框1=gtk_vbox_新(假,0);
gtk_容器添加(gtk_容器(窗口),第1框);
gtk_widget_show(框1);
框2=gtk_vbox_新(假,10);
gtk_容器设置_边界_宽度(gtk_容器(框2),10);
gtk_-box_-pack_-start(gtk_-box(框1),框2,真,真,0);
gtk_widget_show(框2);
按钮=gtk_单选按钮_新按钮,带有标签(空,“按钮1”);
gtk_-box_-pack_启动(gtk_-box(框2),按钮,真,真,0);
gtk_小部件_显示(按钮);
组=gtk_单选按钮组(gtk_单选按钮(按钮));
按钮=gtk_单选按钮_新按钮,带有标签(组,“按钮2”);
gtk_切换_按钮设置_激活(gtk_切换_按钮(按钮),真);
gtk_-box_-pack_启动(gtk_-box(框2),按钮,真,真,0);
gtk_小部件_显示(按钮);
按钮=gtk_单选按钮(按钮)(gtk_单选按钮)(按钮),,
“按钮3”);
gtk_-box_-pack_启动(gtk_-box(框2),按钮,真,真,0);
gtk_小部件_显示(按钮);
分离器=gtk_hsepator_new();
gtk_-box_-pack_启动(gtk_-box(box1),分隔符,假,真,0);
gtk_widget_show(分隔符);
框2=gtk_vbox_新(假,10);
gtk_容器设置_边界_宽度(gtk_容器(框2),10);
gtk_-box_-pack_-start(gtk_-box(框1),框2,FALSE,TRUE,0);
gtk_widget_show(框2);
按钮=gtk_按钮_新建_,带_标签(“关闭”);
g_信号_连接_交换(按钮“点击”,
G_回调(关闭_应用程序),
窗口);
gtk_-box_-pack_启动(gtk_-box(框2),按钮,真,真,0);
gtk_widget_set_can_default(按钮,TRUE);
gtk_小部件_抓取_默认值(按钮);
gtk_小部件_显示(按钮);
//单击此按钮将调用btn_selected方法
按钮=gtk_按钮_新建_,带_标签(“选定”);
g_信号连接(按钮“点击”,g_回调(btn_选中),空);
gtk_-box_-pack_启动(gtk_-box(框2),按钮,真,真,0);
gtk_小部件_显示(按钮);
gtk_widget_show(窗口);
gtk_main();
返回0;
}
GUI出现时没有任何错误,我只是不知道如何检查选中了哪个单选按钮,以便执行操作。由于所有的按钮都命名为button,我不知道如何检查特定的按钮。我从gtk在线教程中获得了这段代码
如果您有任何想法,我们将不胜感激。GtkRadioButton是GtkToggleButton的后代,因此您可以连接到“切换”信号或使用“活动”属性来更改按钮的状态