GTK Gossip: GtkCheckButton 與 GtkRadioButton
2010-12-10 10:09
323 查看
核
取鈕(Check Button)是可以進行選項複選的元件,單選鈕(Radio
Button)是只能進行選項單選的元件,在GTK中分別使用GtkCheckButton
與GtkRadioButton來負責,它們是雙態按鈕GtkToggleButton的子類:
GtkToggleButton
+----GtkCheckButton
+----GtkRadioButton
建立核取鈕或單選鈕的方式與建立一般按鈕類似,您可以使用gtk_check_button_new()、
gtk_check_button_new_with_label()、gtk_check_button_new_with_mnemonic(),來
建立核取鈕,GtkRadioButton必須使用按鈕群組(Button
Group)來加以群組,來表示哪些單選項為一個群組,彼此互斥,同時間只能選擇一個,例如
gtk_radio_button_new_with_label()函式:
GtkWidget *gtk_radio_button_new_with_label(GSList *group, const gchar *label);
第一次建立GtkRadioButton時,GSList的參數直接設為NULL即可,接著使用
gtk_radio_button_get_group()獲得按鈕群組;
GSList *gtk_radio_button_get_group( GtkRadioButton *radio_button);
例如以下的程式碼會先建立一個GtkRadioButton,接著從已建立的GtkRadioButton獲得按鈕群組,然後再用以建立另一個GtkRadioButton,如此兩個單選鈕就屬於同一個群組,同時間只能選取一個:
GtkWidget *radio1 = gtk_radio_button_new_with_label(NULL, "Linux");
GtkWidget *radio2 = gtk_radio_button_new_with_label(
gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio1)) , "Windows");
您也可以使用gtk_radio_button_new_with_label_from_widget(),這可以省略gtk_radio_button_get_group()這道手續,例如:
GtkWidget *radio1 = gtk_radio_button_new_with_label(NULL, "Linux");
GtkWidget *radio2 = gtk_radio_button_new_with_label_from_widget(
GTK_RADIO_BUTTON(radio1) , "Windows");
由於GtkCheckButton與GtkRadioButton都屬於GtkToggleButton的子類,如果要設定按鈕為選取狀態,則直接使用gtk_toggle_button_set_active()函式即可。
下面的程式為
GtkCheckButton與GtkRadioButton
配置的基本示範:
check_radio_demo.c
執行的畫面如下所示:
取鈕(Check Button)是可以進行選項複選的元件,單選鈕(Radio
Button)是只能進行選項單選的元件,在GTK中分別使用GtkCheckButton
與GtkRadioButton來負責,它們是雙態按鈕GtkToggleButton的子類:
GtkToggleButton
+----GtkCheckButton
+----GtkRadioButton
建立核取鈕或單選鈕的方式與建立一般按鈕類似,您可以使用gtk_check_button_new()、
gtk_check_button_new_with_label()、gtk_check_button_new_with_mnemonic(),來
建立核取鈕,GtkRadioButton必須使用按鈕群組(Button
Group)來加以群組,來表示哪些單選項為一個群組,彼此互斥,同時間只能選擇一個,例如
gtk_radio_button_new_with_label()函式:
GtkWidget *gtk_radio_button_new_with_label(GSList *group, const gchar *label);
第一次建立GtkRadioButton時,GSList的參數直接設為NULL即可,接著使用
gtk_radio_button_get_group()獲得按鈕群組;
GSList *gtk_radio_button_get_group( GtkRadioButton *radio_button);
例如以下的程式碼會先建立一個GtkRadioButton,接著從已建立的GtkRadioButton獲得按鈕群組,然後再用以建立另一個GtkRadioButton,如此兩個單選鈕就屬於同一個群組,同時間只能選取一個:
GtkWidget *radio1 = gtk_radio_button_new_with_label(NULL, "Linux");
GtkWidget *radio2 = gtk_radio_button_new_with_label(
gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio1)) , "Windows");
您也可以使用gtk_radio_button_new_with_label_from_widget(),這可以省略gtk_radio_button_get_group()這道手續,例如:
GtkWidget *radio1 = gtk_radio_button_new_with_label(NULL, "Linux");
GtkWidget *radio2 = gtk_radio_button_new_with_label_from_widget(
GTK_RADIO_BUTTON(radio1) , "Windows");
由於GtkCheckButton與GtkRadioButton都屬於GtkToggleButton的子類,如果要設定按鈕為選取狀態,則直接使用gtk_toggle_button_set_active()函式即可。
下面的程式為
GtkCheckButton與GtkRadioButton
配置的基本示範:
check_radio_demo.c
#include <gtk/gtk.h> GtkWidget* checkButtonsNew() { GtkWidget *check1, *check2; GtkWidget *vbox; check1 = gtk_check_button_new_with_label("Java is good!"); check2 = gtk_check_button_new_with_label("C++ is good!"); vbox = gtk_vbox_new(TRUE, 5); gtk_box_pack_start(GTK_BOX(vbox), check1, TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(vbox), check2, TRUE, TRUE, 5); return vbox; } GtkWidget* radioButtonsNew() { GtkWidget *radio1, *radio2, *radio3; GtkWidget *vbox; radio1 = gtk_radio_button_new_with_label(NULL, "Linux"); radio2 = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(radio1) , "Windows"); radio3 = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(radio1) , "Mac"); vbox = gtk_vbox_new(TRUE, 5); gtk_box_pack_start(GTK_BOX(vbox), radio1, TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(vbox), radio2, TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(vbox), radio3, TRUE, TRUE, 5); return vbox; } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *vbox; GtkWidget *frame; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "GtkCheckButton & GtkRadioButton"); gtk_window_set_default_size(GTK_WINDOW(window), 400, 50); vbox = gtk_vbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), checkButtonsNew(), TRUE, TRUE, 5); frame = gtk_frame_new("Favorite OS"); gtk_container_add(GTK_CONTAINER(frame), radioButtonsNew()); gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 5); gtk_container_add(GTK_CONTAINER(window), vbox); g_signal_connect(GTK_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show_all(window); gtk_main(); return 0; }
執行的畫面如下所示:
相关文章推荐
- MFC控件使用说明(combo box Button Check Box Radio Button List Control Edit Box Hot Key IP Address....)
- GTK Gossip: GtkFrame 與 GtkButtonBox
- MFC控件使用说明(combo box Button Check Box Radio Button List Control Edit Box Hot Key IP Address)
- MFC控件使用说明(combo box Button Check Box Radio Button List Control Edit Box Hot Key IP Address....)
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(LabelFrame/Checkbutton/Radiobutton)——Jason niu
- GTK Gossip: GtkColorButton 與 GtkColorSelectionDialog
- How to get the value of a form element : check box and radio button
- MFC控件使用说明(combo box Button Check Box Radio Button List Control Edit Box Hot Key IP Address....)
- GTK Gossip: GtkFontButton 與 GtkFontSelectionDialog
- GTK Gossip: GtkFileChooserButton 與 GtkFileChooserDialog
- GTK Gossip: GtkCheckMenuItem、GtkRadioMenuItem 與 GtkTearoffMenuItem
- PyGobject(十)布局容器之Button篇——Gtk.CheckButton
- GTK Gossip: GtkSpinButton
- PyGobject(十一)布局容器之Button篇——Gtk.RadioButton
- WinAPI CheckRadioButton()
- flex radiobutton checkbutton combox color flex 教程 flex培训 flex源码 flex实例
- check radio button is checked use jquery
- GTK Gossip: GtkButton 與 GtkToggleButton
- 转:flex radiobutton checkbutton combox color flex 教程 flex培训 flex源码 flex实例
- MFC获取Check Box/Radio button按钮状态的方法,和改变改变其按钮状态的方法有