Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Программирование с использованием gtkmm 3. Виджеты диапазонов

Оригинал: Programming with gtkmm 3
Авторы: Murray Cumming, Bernhard Rieder, Jonathon Jongsma, Ole Laursen, Marko Anastasov, Daniel Elstner, Chris Vine, David King, Pedro Ferreira, Kjell Ahlstedt
Перевод: А.Панин

6. Виджеты диапазонов

Классы Gtk::Scale и Gtk:Scrollbar наследуются от класса Gtk::Range и обладают сходной функциональностью. Представляемые этими классами виджеты содержат "полосу прокрутки" и "ползунок" (иногда называемые "барабаном" в других графических окружениях). Перемещение ползунка с помощью указателя мыши приводит к его движению по полосе прокрутки, а нажатие на полосу прокрутки приводит к перемещению ползунка по направлению к точке нажатия либо в саму точку, либо на определенное расстояние в зависимости от того, какая кнопка мыши была использована. Такое поведение полосы прокрутки должно быть привычным для пользователей.

Как будет описано в разделе "Объект установки диапазона значений", каждый из виджетов диапазонов ассоциируется с объектом установки диапазона значений (Adjustment). Для изменения используемых виджетом минимального, максимального и текущего значений вам необходимо использовать методы соответствующего объекта установки диапазона значений, который вы можете получить, использовав метод класса виджета get_adjustment(). Стандартные конструкторы виджетов диапазонов создают объекты установки диапазона значений автоматически, причем вы можете также указать существующий объект установки диапазона значений, возможно, для того, чтобы использовать его и для другого виджета. Обратитесь к разделу "Объект установки диапазона значений" для получения более подробной информации.

Справочная информация

6.1. Виджеты полос прокрутки (Scrollbar Widgets)

Эти виджеты являются стандартными полосами прокрутки. Они должны использоваться только для прокручивания другого виджета, такого, как виджет, представленный классом Gtk::Entry или Gtk::Viewport, хотя в большинстве случаев для этой цели проще использовать виджет, представленный классом Gtk::ScrolledWindow.

Ориентация представленного классом Gtk::Scrollbar виджета может быть либо вертикальной, либо горизонтальной.

Справочная информация

6.2. Виджеты изменения значений (Scale Widgets)

Виджеты, представленные классом Gtk::Scale (или "ползунки") позволяют пользователю в интерактивном режиме изменять числовое значение в заданном диапазоне. Вы можете использовать такой виджет, к примеру, для установки степени увеличения эскиза изображения, для управления яркостью цвета или для указания длительности периода бездействия в минутах до момента активации хранителя экрана.

Как и в случае с полосами прокрутки, ориентация виджета может быть либо вертикальной, либо горизонтальной. Стандартный конструктор создает объект установки диапазона значений со всеми значениями, равными 0.0. Эти значения не позволят корректно использовать виджет, поэтому вам придется установить некоторые параметры диапазона значений для нормальной работы.

6.2.1. Полезные методы

Виджеты изменения значений могут выводить текущие значения рядом с полосой прокрутки. По умолчанию они осуществляют вывод значения, но вы можете изменить это поведение путем использования метода set_draw_value().

Значение, выводимое виджетом изменения значений по умолчанию округляются до одного десятичного разряда в соответствии со значением, заданным с помощью параметра value соответствующего экземпляра класса Gtk::Adjustment. Вы можете использовать метод set_digits() для изменения этого параметра.

Также следует помнить о том, что значение может выводиться в различных позициях относительно полосы прокрутки, причем позиция задается с помощью метода set_value_pos().

Справочная информация

6.3. Политики обновления значений

Политики обновления значений виджетов диапазонов устанавливают моменты в процессе взаимодействия с пользователем, когда изменяется значение параметра value объекта установки диапазонов значений, являющегося экземпляром класса Gtk::Adjustment, и генерируется сигнал "value_changed". Следующие политики обновления могут устанавливаться с помощью метода set_update_policy():
  • Gtk::UPDATE_CONTINUOUS - Это стандартная политика. Сигнал "value_changed" генерируется постоянно, т.е., всегда, когда ползунок совершает даже минимальное перемещение.
  • Gtk::UPDATE_DISCONTINUOUS - Сигнал "value_changed" генерируется только тогда, когда ползунок прекратил перемещение и пользователь отпустил кнопку мыши.
  • Gtk::UPDATE_DELAYED - Сигнал "value_changed" генерируется тогда, когда пользователь отпускает кнопку мыши или ползунок прекращает перемещение на короткий промежуток времени.

6.4. Пример

В данном примере показано окно с тремя виджетами диапазонов, соединенными с одним объектом установки диапазонов значений вместе с набором виджетов для управления некоторыми упомянутыми в разделе выше параметрами объектов установки диапазонов значений, поэтому у вас будет возможность ознакомления с тем, как эти параметры влияют на процесс взаимодействия виджетов с пользователем.

Рисунок 6-1: Виджеты диапазонов
Виджеты диапазонов

Исходный код

Файл examplewindow.h (Для использования совместно с gtkmm 3, а не с gtkmm 2)

Файл examplewindow.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)

Файл main.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)


Следующий раздел : 7. Виджеты общего назначения.