ラジオボタン2010年2月11日 | |
![]() ファイル内容ラジオボタンを作ります。ここでは、ラジオボタン用の枠を作るために、GtkFrame を使います。
frame = gtk_frame_new("radio button");
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 2);
gtk_radio_button_new_with_label_from_widget() でラジオボタンを作ります。 r1 = gtk_radio_button_new_with_label_from_widget( NULL, "radio 1"); r2 = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(r1), "radio 2"); r3 = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(r1), "radio 3"); 第 1 引数で r2, r3 を r1 に関連付けしています。 ラジオボタンのチェック用にボタンをつけています。
button = gtk_button_new_with_label("Check");
gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
g_signal_connect(button, "clicked", G_CALLBACK(buttonClicked), group);
クリックイベントのコールバック関数にはラジオボタンのグループを渡しています。 group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(r1)); グループはラジオボタンのリストになっており、その各要素を gtk_toggle_button_get_active() でチェックすることによって、どのボタンが選択されているのかがわかります。
void buttonClicked(GtkWidget *widget, GSList *list)
{
GtkWidget *w;
int i;
for(i = 0; i < g_slist_length(list); i++){
w = g_slist_nth_data(list, i);
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))){
printf("%d\n", 3 - i);
break;
}
}
}
| |
| PENGUINITIS | |