GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Signals |
GtkRadioButtonGtkRadioButton Выбор из множества контроль-кнопок |
#include <gtk/gtk.h>
GtkRadioButton;
GtkWidget* gtk_radio_button_new (GSList *group);
GtkWidget* gtk_radio_button_new_from_widget
(GtkRadioButton *group);
GtkWidget* gtk_radio_button_new_with_label (GSList *group,
const gchar *label);
GtkWidget* gtk_radio_button_new_with_label_from_widget
(GtkRadioButton *group,
const gchar *label);
GtkWidget* gtk_radio_button_new_with_mnemonic
(GSList *group,
const gchar *label);
GtkWidget* gtk_radio_button_new_with_mnemonic_from_widget
(GtkRadioButton *group,
const gchar *label);
#define gtk_radio_button_group
void gtk_radio_button_set_group (GtkRadioButton *radio_button,
GSList *group);
GSList* gtk_radio_button_get_group (GtkRadioButton *radio_button);
GObject
+----GInitiallyUnowned
+----GtkObject
+----GtkWidget
+----GtkContainer
+----GtkBin
+----GtkButton
+----GtkToggleButton
+----GtkCheckButton
+----GtkRadioButton
GtkRadioButton осуществляет AtkImplementorIface.
"group" GtkRadioButton : WriteСигналы
"group-changed" void user_function (GtkRadioButton *style, gpointer user_data) : Run first
Описание
Единственная радио-кнопка представляет такие же функции как и GtkCheckButton, как её позиция отражена в иерархии объектов. Только когда радио-кнопки объединены вместе в единую группу они становятся отличающимся компонентом интерфейса пользователя.
Каждая радио-кнопка член некоторой группы радио-кнопок. Когда одна выделена, все другие радио-кнопки в этой же группе становятся не выделенными. GtkRadioButton один из способов дать пользователю выбор из нескольких опций.
Виджет радио-кнопки создаётся с помощью gtk_radio_button_new(), помещается NULL как аргумент, если это первая радио-кнопка в группе. В последующих вызовах для добавления к группе, вы должны помещать эту кнопку как аргумент. Опционально может быть вызвана gtk_radio_button_new_with_label(), если вам нужна радио-кнопка с текстовой меткой.
Альтернативно, когда добавляются виджеты к существующей группе радио-кнопок, используется gtk_radio_button_new_from_widget() с GtkRadioButton для которого уже назначена группа. Обеспечивается также функция удобства gtk_radio_button_new_with_label_from_widget().
Для поиска группы к которой установлен GtkRadioButton, используется gtk_radio_button_get_group().
Для удаления GtkRadioButton из одной группы и создания части новой, используется gtk_radio_button_set_group().
Список групп не нуждается в освобождении (freed), поскольку каждый GtkRadioButton удаляет себя сам и свой элемент в списке при уничтожении.
Пример 1. Как создать группу из двух радио-кнопок.
void create_radio_buttons (void) { GtkWidget *window, *radio1, *radio2, *box, *entry; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); box = gtk_vbox_new (TRUE, 2); /* Создаём радио-кнопку с GtkEntry виджетом */ radio1 = gtk_radio_button_new (NULL); entry = gtk_entry_new (); gtk_container_add (GTK_CONTAINER (radio1), entry); /* Создаём радио-кнопку с меткой */ radio2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1), "I'm the second radio button."); /* Упаковываем элементы в контейнер, затем отображаем все виджеты */ gtk_box_pack_start (GTK_BOX (box), radio1, TRUE, TRUE, 2); gtk_box_pack_start (GTK_BOX (box), radio2, TRUE, TRUE, 2); gtk_container_add (GTK_CONTAINER (window), box); gtk_widget_show_all (window); return; }
Когда не выбранная кнопка в группе нажата она получает "toggled" сигнал, как делает предварительно выбранная кнопка. В обработчике сигнала "toggled", gtk_toggle_button_get_active() может использоваться для определения была ли кнопка выбрана или с неё снят выбор.
Детали
GtkRadioButton
typedef struct _GtkRadioButton GtkRadioButton;Содержит приватные данные которые должны читаться и управляться функциями приведёнными ниже.
gtk_radio_button_new ()
GtkWidget* gtk_radio_button_new (GSList *group);Создаёт новый GtkRadioButton. Чтобы иметь любое практическое значение, виджет должен быть упакован в радио-кнопку.
group : |
Существующая группа радио-кнопок, или NULL если вы создаёте новую группу. |
Возвращает: |
Новая радио-кнопка. |
GtkWidget* gtk_radio_button_new_from_widget
(GtkRadioButton *group);
Создаёт новый GtkRadioButton, добавляет к group. Как с gtk_radio_button_new(), виджет должен быть упакован в радио-кнопку.
group : |
существующий GtkRadioButton. |
Возвращает: |
Новая радио-кнопка. |
GtkWidget* gtk_radio_button_new_with_label (GSList *group,
const gchar *label);
Создаёт новый GtkRadioButton с текстовой меткой.
group : |
Существующая группа ради-кнопок, или NULL если вы создаёте новую группу. |
label : |
Текстовая метка отображаемая рядом с радио-кнопкой. |
Возвращает: |
Новая радио-кнопка. |
GtkWidget* gtk_radio_button_new_with_label_from_widget
(GtkRadioButton *group,
const gchar *label);
Создаёт новый GtkRadioButton с текстовой меткой, добавляет к той же group.
group : |
существующий GtkRadioButton. |
label : |
Текстовая метка отображаемая рядом с радио-кнопкой. |
Возвращает: |
Новая радио-кнопка. |
GtkWidget* gtk_radio_button_new_with_mnemonic
(GSList *group,
const gchar *label);
Создаёт новый GtkRadioButton содержащий новый ярлык, добавляет к той же group. Ярлык должен быть создан используя gtk_label_new_with_mnemonic(), таким образом символы подчеркивания в label указывают мнемоник для кнопки.
group : |
Группа радио-кнопок |
label : |
Текст кнопки, с символом подчеркивания перед мнемоническим символом |
Возвращает: |
Новый GtkRadioButton |
GtkWidget* gtk_radio_button_new_with_mnemonic_from_widget
(GtkRadioButton *group,
const gchar *label);
Создаёт новый GtkRadioButton содержащий ярлык. Ярлык должен быть создан используя gtk_label_new_with_mnemonic(), таким образом символы подчеркивания в label указывают мнемоник для кнопки.
group : |
Виджет для получения группы радио-кнопок |
label : |
Текст кнопки, с символом подчеркивания перед мнемоническим символом |
Возвращает: |
новый GtkRadioButton |
#define gtk_radio_button_group gtk_radio_button_get_group
Внимание
gtk_radio_button_group
устарел и не должен использоваться во
вновь создаваемом коде.
Устаревший макрос совместимости.
Вместо него используйте
gtk_radio_button_get_group().
gtk_radio_button_set_group ()
void gtk_radio_button_set_group (GtkRadioButton *radio_button,
GSList *group);
Устанавливает GtkRadioButton's
группу. Обратите внимание на то, что это
никогда не изменит вашего интерфейса,
поэтому если вы меняете группу, вы должны
перестроить пользовательский интерфейс,
чтобы отразить внесенные изменения.
radio_button : |
|
group : |
Существующая группа радио-кнопок, такая как возвращаемая из gtk_radio_button_get_group(). |
GSList* gtk_radio_button_get_group (GtkRadioButton *radio_button);Ищет группу установленную для радио-кнопки.
radio_button : |
|
Возвращает: |
Связанный список содержащий все радио-кнопки той же группы как radio_button. |
"group" GtkRadioButton : WriteУстанавливает новую группу для радио-кнопки.
Детали сигнала
Сигнал "group-changed"
void user_function (GtkRadioButton *style, gpointer user_data) : Run first
Издаётся когда изменяется группа радио-кнопок которой принадлежит радио-кнопка. Это используется то когда, когда радио-кнопка будучи одна переключается, чтобы стать частью группы из двух и более кнопок, или наоборот, когда кнопка перемещается из группы двух или более кнопок в единичное состояние, но не когда состав группы к которой принадлежит кнопка изменяется.
style : |
Объект получающий сигнал |
user_data : |
Пользовательские данные устанавливаемые когда подключается обработчик. |
Начиная с версии 2.4
Другой способ предложить пользователю выбор единственного из множества. |