Опубликован: 13.07.2012 | Доступ: свободный | Студентов: 460 / 8 | Оценка: 5.00 / 5.00 | Длительность: 18:06:00
Специальности: Программист
Лекция 13:

Элементы управления. Элементы управления для установки значений

< Лекция 12 || Лекция 13: 123 || Лекция 14 >
Аннотация: В этой лекции описывается работа с виджетами для установки значений, созданными на основе одного класса, Slider.

Цель лекции: Научиться использовать класс Slider для создания различного рода ползунков

К элементам управления для установки значений относятся ползунок, установщик (регулятор) и полоса прокрутки. Эта группа виджетов предназначена для задания каких-либо численных параметров программы, не требующих большой точности, например, уровень громкости звука в медиаплейере.

Для создания первых двух виджетов в Juce используется один классSlider. Объекты этого класса могут значительно отличаться друг от друга по внешнему виду в зависимости от настроек стиля ( рис. 13.1).

Различные стили объектов класса Slider в демонстрационном приложении Juce

Рис. 13.1. Различные стили объектов класса Slider в демонстрационном приложении Juce

Конструктор класса Slider::Slider(const String& componentName = String::empty) создаёт ползунок, пользовательский интерфейс (стиль, а также границы и шаг устанавливаемых значений) которого должны быть обязательно заданы программистом.

Стиль объекта класса Slider устанавливается идентификаторами перечислимого типа SlyderStyle:

  • LinearHorizontal — традиционный горизонтальный ползунок;
  • LinearVertical — традиционный вертикальный ползунок;
  • LinearBar — полоса с заливкой, которую можно протягивать мышью, и надписью поверх неё;
  • Rotary — установщик (круговой регулятор), похожий на регулятор громкости радиоприёмника, головку которого можно перемещать с помощью мыши;
  • RotaryHorizontalDrag — установщик (круговой регулятор), похожий на регулятор громкости радиоприёмника, головку которого можно перемещать с помощью мыши слева направо;
  • RotaryVerticalDrag — установщик (круговой регулятор), похожий на регулятор громкости радиоприёмника, головку которого можно перемещать с помощью мыши вверх и вниз;
  • IncDecButtons — пара кнопок, нажатие на которые инкрементируют / декрементируют текущее значение ползунка на величину, заданную параметром newInterval метода void Slider::setRange(double newMinimum, double newMaximum, double newInterval = 0);
  • TwoValueHorizontal — горизонтальный ползунок с двумя головками вместо одной, которые могут показывать минимальное и максимальное значения параметра;
  • TwoValueVertical — вертикальный ползунок с двумя головками вместо одной, которые могут показывать минимальное и максимальное значения параметра;
  • ThreeValueHorizontal — горизонтальный ползунок с тремя головками вместо одной, которые могут показывать минимальное и максимальное значения параметра, а также текущее, находящееся где-то между ними;
  • ThreeValueVertical — вертикальный ползунок с тремя головками вместо одной, которые могут показывать минимальное и максимальное значения параметра, а также текущее, находящееся где-то между ними (см. рис. 13.1).

Для того, чтобы присвоить ползунку тот или иной стиль, необходимо передать идентификатор SlyderStyle в качестве параметра в метод void Slider::setSliderStyle(SliderStyle newStyle).

Для установки границ и шага изменения значения ползунка используется уже упоминавшийся метод void Slider::setRange(double newMinimum, double newMaximum, double newInterval = 0), где newMinimum, newMaximum и newInterval — минимальное, максимальное значения и шаг, соответственно. Если параметр newInterval не равен нулю, то приращение его значения будет вычисляться как newMinimum + (newInterval * i), где iприращение.

Установить текущее значение ползунка можно с помощью метода void Slider::setValue(double newValue, bool sendUpdateMessage = true, bool sendMessageSynchronously = false), где newValue — устанавливаемое значение, а sendUpdateMessage и sendMessageSynchronously — флаги того, следует ли отправлять сообщения слушателям ползунка об изменении его значения и следует ли осуществлять их вызов синхронно (в случае, если слушателей несколько).

Для получения текущего значения ползунка можно вызвать метод double Slider::getValue() const. Если он не был вызван, то начальное значение ползунка будет установлено на ноль.

Отслеживать изменения позволяет слушатель ползунка, SliderListener, включающий одну чистую виртуальную функцию, virtual void Slider::Listener::sliderValueChanged(Slider* slider), которая должна быть переопределена.

Рассмотрим это на примере. Приложение, представленное на рисунке 13.2 , содержит ползунок pSlider и полосу выполнения pProgressBar, состояние которой зависит от текущего значения ползунка.

Приложение, демонстрирующее работу ползунка

Рис. 13.2. Приложение, демонстрирующее работу ползунка
< Лекция 12 || Лекция 13: 123 || Лекция 14 >