|
GTK+ 2.0 Tutorial |
||
|---|---|---|
|
Range Widgets |
||
Внутренне виджеты диапазона справедливо усложнены, также как и все виджеты базового класса ("base class"), но все эти сложности достаточно интересны для изучения, если вы хотите по-настоящему разобраться в этом. Кроме того, все функции и сигналы которые здесь определены, действительно реально используются при создании виджетов. Есть, однако, несколько полезных функций, которые определены в <gtk/gtkrange.h> и будут работать со всеми виджетами диапазона.
"Политика обновления" ("update policy") для виджетов диапазона определяет на сколько изменять значение в результате регулировок пользователя и создаёт "value_changed" сигнал для этого регулятора."Политика обновления", определена в <gtk/gtkenums.h> как тип enum GtkUpdateType:
"Политика обновления" может быть определена подстановкой макроса 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 () не делает абсолютно ничего, если вы передаете регулятор, уже используемый диапазоном(range), независимо от того, изменили ли вы какое -либо из его полей или нет. Если вы передаете новый регулятор, он отсоединяент старый если таковой существовал (возможно уничтожив его), соединит соответствующие сигналы с новым и вызовет закрытую функцию gtk_range_adjustment_changed(), которая будет (или по крайней мере должна), повторно вычислять размер и/или положение ползунка и изменять в случае необходимости. Как упоминалось в секции о регуляторах, если вы хотите использовать тот же регулятор при непосредственном изменении значений, вы должны создать сигнал "changed":
g_signal_emit_by_name (G_OBJECT (adjustment), "changed"); |
|
Scale Widgets |
Key and Mouse bindings |