The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) 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 до 31 января 2012 года и выиграй СУПЕРПРИЗ!

Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

Подробнее о проведении акции вы можете прочитать на странице сайта.


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