The OpenNET Project
 
Поиск (ключи):  ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
ССЫЛКИ НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

GTK+ 2.0 Tutorial

<<< Previous

Range Widgets

Next >>>


Основные функции диапазона

Внутренне виджеты диапазона справедливо усложнены, также как и все виджеты базового класса ("base class"), но все эти сложности достаточно интересны для изучения, если вы хотите по-настоящему разобраться в этом. Кроме того, все функции и сигналы которые здесь определены, действительно реально используются при создании виджетов.  Есть, однако, несколько полезных функций, которые определены в <gtk/gtkrange.h> и будут работать со всеми виджетами диапазона.

Установки "политики обновления"

"Политика обновления" ("update policy") для виджетов диапазона определяет на сколько изменять значение в результате регулировок пользователя и создаёт "value_changed" сигнал для этого регулятора."Политика обновления", определена в  <gtk/gtkenums.h> как тип enum GtkUpdateType:

GTK_UPDATE_CONTINUOUS
По умолчанию сигнал "value_changed" производится непрерывно, то есть всякий раз когда изменяется положение ползунка.
GTK_UPDATE_DISCONTINUOUS
Сигнал "value_changed" производится, как только ползунок остановился и пользователь отпустил кнопку мыши.
GTK_UPDATE_DELAYED
Сигнал "value_changed" производится, когда пользователь отпускает кнопку мыши, или если ползунок прекращает перемещаться на короткий промежуток времени.

"Политика обновления" может быть установлена размещением макроса GTK_RANGE(widget) в функцию:

void gtk_range_set_update_policy( GtkRange      *range,
                                  GtkUpdateType  policy);

Получение и Установки Регуляторов

Получение и установка регуляторов для виджетов диапазона налету ("on the fly") делается так:

GtkAdjustment* gtk_range_get_adjustment( GtkRange *range );
void gtk_range_set_adjustment( GtkRange      *range,
                               GtkAdjustment *adjustment );

gtk_range_get_adjustment() возвращает указатель на регулятор с которым связан range.

gtk_range_set_adjustment () не делает абсолютно ничего, если вы передаете регулятор, диапазон которого уже используется, независимо от того, изменили ли вы любую из его областей или нет. Если вы передаете новый регулятор, он может уничтожить старый если таковой существовал (possibly destroying it), соединит соответствующие сигналы с новым и вызовет отдельно функцию gtk_range_adjustment_changed(),  которая будет (или по крайней мере должна), повторно вычислять размер и/или положение ползунка и изменять в случае необходимости. Как упоминалось в секции о регуляторах, если вы хотите использовать тот же регулятор при непосредственном изменении значений, вы должны создать сигнал "changed":

g_signal_emit_by_name (G_OBJECT (adjustment), "changed");

<<< Previous

Home

Next >>>

Scale Widgets

Up

Key and Mouse bindings




Подпишись на Linux Format и получи один из 3 ценных призов!

Началась подписка на журнал Linux Format на 2010 год. Спешите оформить подписку на единственный в России ежемесячный журнал о Linux!

Все, оформившие подписку на печатную версию журнала, получают диск с архивом журнала Linux Format за 2005-2009г. в подарок. Также в подарок вы получаете именную электронную версию в формате PDF. Теперь вы можете приступить к чтению журнала сразу в момент выхода свежего номера, не дожидаясь, пока вам доставят бумажную версию.

Кроме того, все, оформившие подписку на первую половину или весь 2010 год в интернет-магазине ГНУ/Линуксцентра, автоматически становятся участниками розыгрыша ценных призов:


  Закладки на сайте
  Проследить за страницей
Created 1996-2010 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList