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 () не делает абсолютно ничего, если вы передаете регулятор, диапазон которого уже используется, независимо от того, изменили ли вы любую из его областей или нет. Если вы передаете новый регулятор, он может уничтожить старый если таковой существовал (possibly destroying it), соединит соответствующие сигналы с новым и вызовет отдельно функцию gtk_range_adjustment_changed(), которая будет (или по крайней мере должна), повторно вычислять размер и/или положение ползунка и изменять в случае необходимости. Как упоминалось в секции о регуляторах, если вы хотите использовать тот же регулятор при непосредственном изменении значений, вы должны создать сигнал "changed":
g_signal_emit_by_name (G_OBJECT (adjustment), "changed");
|
Scale Widgets |
Key and Mouse bindings |