Элементы управления. Элементы управления для установки значений
Цель лекции: Научиться использовать класс Slider для создания различного рода ползунков
К элементам управления для установки значений относятся ползунок, установщик (регулятор) и полоса прокрутки. Эта группа виджетов предназначена для задания каких-либо численных параметров программы, не требующих большой точности, например, уровень громкости звука в медиаплейере.
Для создания первых двух виджетов в Juce используется один класс — Slider. Объекты этого класса могут значительно отличаться друг от друга по внешнему виду в зависимости от настроек стиля ( рис. 13.1).
Конструктор класса 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, состояние которой зависит от текущего значения ползунка.