ラジオボタンは、複数の選択肢から一つにチェックをいれるときに使用するボタンです。
#include <gtk/gtk.h>
int main(int argc,char *argv[]){
GtkWidget *window;
GtkWidget *radiobutton1;
GtkWidget *radiobutton2;
GtkWidget *vbox;
GSList *group;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"Program");
gtk_window_set_default_size(GTK_WINDOW(window),480,320);
vbox=gtk_vbox_new(FALSE,0);
gtk_container_add(GTK_CONTAINER(window),vbox);
radiobutton1=gtk_radio_button_new_with_label(NULL,"Hello World");
group=gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton1));
radiobutton2=gtk_radio_button_new_with_label(group,"Hello World2");
gtk_box_pack_start(GTK_BOX(vbox),radiobutton1,TRUE,TRUE,0);
gtk_box_pack_start(GTK_BOX(vbox),radiobutton2,TRUE,TRUE,0);
gtk_widget_show(radiobutton1);
gtk_widget_show(radiobutton2);
gtk_widget_show(vbox);
gtk_widget_show(window);
g_signal_connect(window,"destroy",gtk_main_quit,NULL);
gtk_main();
return 0;
}
チェックボタンと殆ど同じです。操作は殆どgtk_togglebutton....で操作します。
ラジオボタンはgtk_radio_button_new()で作成しますが、複数のボタンを組にする必要があるので、gtk_radio_button_get_group()で、ボタンのグループを得ます。
gtk_radio_button_new()の引数は1つで、グループ名です。NULLにすると、グループが新規に作成されます。gtk_radio_button_get_group()の引数は一つで、ラジオボタン名をとり、グループ名をGSListで返します。
上の例では、 ラジオボタン新規作成(グループはNULL) → グループ名の取得 → 取得したグループ名を利用して、ボタン追加 の順に行っています。
あらかじめ表示するラベルが決まっている場合はgtk_check_button_new_with_label()が便利でしょう。後者は引数2つ、グループ名とラベルの文字列です。
ラジオボタンは、普通のボタンと違い、クリックしたらすぐに何かが起こる、というよりも、チェックいるか否かによってその後の動作を変えるというような使い方をします。
チェックボタンの状態は、gtk_toggle_button_get_active()によって得ることができます。引数は1つで、ボタンの名前、押されているか否かがTRUE、FALSEで返されます。