Хорошо поняв вышесказанное, возникает
вопрос: как можно создать собственный
обработчик сигнала для перехвата
сигналов регулирования, при использовании
регуляторов пользователем, и как
устанавливать значение диапазона
регулировок в таких обработчиках?
Чтобы ответить на этот
вопрос и последующие, для начала
рассмотрим структуру struct
_GtkAdjustment:
Когда вы установите
значения регулировок, вы захотите чтобы
все виджеты использовали эти значения
как основные, GTK позволяет сделать
это с помощью функции, например:
void gtk_adjustment_set_value( GtkAdjustment *adjustment,
gdouble value );
Как упоминалось ранее, Регуляторы это
подкласс объектов как и все виджеты,
поэтому они могут производить сигналы.
Обновления случаются автоматически,
когда вы совместно используете объект
настройки между scrollbar и другим
регулировочным виджетом; все регулировочные
виджеты подключают обработчики сигнала
с сигналом value_changed для их настройки.
Вот - определение этого сигнала в struct
_GtkAdjustmentClass:
Различные виджеты использующие объекты
регулирования, создают этот сигнал
каждый раз, когда происходит изменение
значения регулятора. Это происходит и
тогда, когда пользователь изменяет
положение регулятора, и когда программа
явно изменяет значение
используя gtk_adjustment_set_value(). Так например
при использовании регулятора масштаба
изображения, нужно чтобы вид изображения
менялся всякий раз когда меняется
значение регулятора, для этого создаётся
обратный вызов:
А что если пользователь добавит информацию
в виджет, тем самым расширит область
регулировки? В этом случае производится
изменённый сигнал:
void (* changed) (GtkAdjustment *adjustment);
Обычно виджеты регулировки диапазона
подключают к этому сигналу обработчик,
который изменяет их внешний вид - например
размер ползунка в полосе прокрутки
уменьшается пропорционально увеличению
области прокручивания.
Вам наверное никогда не понадобится к
этому сигналу подключать обработчик,
за исключением случаев создания новых
типов виджетов диапазона. Однако, если
вы непосредственно изменяете значения
регулировок, вам потребуется создавать
этот сигнал для перенастройки любого
виджета примерно так:
Началась подписка на журнал Linux Format на 2010 год.
Спешите оформить подписку на единственный в России ежемесячный журнал о Linux!
Все, оформившие подписку на печатную версию журнала, получают диск с архивом журнала Linux Format за
2005-2009г. в подарок. Также в подарок вы получаете именную электронную версию в формате PDF.
Теперь вы можете приступить к чтению журнала сразу в момент выхода свежего номера, не дожидаясь,
пока вам доставят бумажную версию.
Кроме того, все, оформившие подписку на первую половину или весь 2010 год в
интернет-магазине ГНУ/Линуксцентра, автоматически становятся участниками розыгрыша ценных призов: