переключатель
(toggle buttons)
переключатели
- это кнопки всегда находящиеся в одном
из двух положений, включено или
выключено. при каждом нажатии на кнопку
вы переключаете её положение.
переключатели
являются основой для контроль-кнопок
(check buttons) и для радио-кнопок (radio buttons),
поэтому многие вызовы используемые для
переключателей действительны и для
них. об этом чуть позже.
создание переключателя:
gtkwidget *gtk_toggle_button_new( void );
gtkwidget *gtk_toggle_button_new_with_label( const gchar *label );
gtkwidget *gtk_toggle_button_new_with_mnemonic( const gchar *label );
|
как
вы понимаете, они создаются тождественно
нормальным кнопкам. в первой строке
создается переключатель а в следующих
двух, надпись(ярлык) которая в него
упаковывается.
для
восстановления статуса переключателя,
радио-кнопки или контроль-кнопки
используем конструкцию приведенную в
примере ниже. получая доступ к активной
области структуры переключателя,
осуществляем контроль его состояния,
после первого использования
макроса gtk_toggle_button определяется
указатель на переключатель. нас интересует
сигнал создаваемый переключателем (the
toggle button, check button, and radio button widgets) -
это "toggled" сигнал. для получения
доступа к структуре контроля состояния,
необходимо настроить обработчик сигналов
для сигнала "toggled". это выглядит
примерно так:
void toggle_button_callback (gtkwidget *widget, gpointer data)
{
if (gtk_toggle_button_get_active (gtk_toggle_button (widget)))
{
/* если выполнение останавливается здесь, кнопка переключателя нажата */
} else {
/* если выполнение останавливается здесь, кнопка переключателя не нажата */
}
}
|
изменить состояние
переключателя и его дочерних виджетов
контроль-кнопки или радио-кнопки можно
используя функцию:
void gtk_toggle_button_set_active( gtktogglebutton *toggle_button,
gboolean is_active );
|
при
выполнении в качестве первого аргумента
создаётся кнопка, а вторым аргументом
определяется состояние, true или false -
нажата (depressed) или нет (released) соответственно.
по умолчанию не нажата, тоесть false.
заметьте,
при использовании функции
gtk_toggle_button_set_active(), состояние изменяется
и кнопка производит сигналы "clicked"
и "toggled".
gboolean gtk_toggle_button_get_active (gtktogglebutton *toggle_button);
|
это возвращает
текущее состояние кнопки переключателя
как значение (boolean) true/false.
|