Россия |
Опубликован: 13.07.2012 | Уровень: специалист | Доступ: платный
Лекция 13:
Элементы управления. Элементы управления для установки значений
Кроме того, компонент содержимого нашей программы включает выпадающий список для выбора пользователем стиля ползунка и 4 радиокнопки для выбора местоположения поля ввода, отображающего текущее значение ползунка пример 13.1.
#ifndef _TCentralComponent_h_ #define _TCentralComponent_h_ //--------------------------------------- #include "../JuceLibraryCode/JuceHeader.h" //--------------------------------------- // Класс компонента содержимого, наследует слушатели ползунка, // выпадающего списка и кнопки. class TCentralComponent : public Component, public SliderListener, public ComboBoxListener, public ButtonListener { public: TCentralComponent(); ~TCentralComponent(); void paint(Graphics&); void resized(); // Обработчик изменения позиции ползунка void sliderValueChanged(Slider*); void comboBoxChanged(ComboBox*); void buttonClicked(Button*); private: // Выполнение... double dProgress; // Полоса выполнения ProgressBar* pProgressBar; // Ползунок Slider* pSlider; Label* pStyleLabel; // Выадающий сисок со значениями стиля ползунка ComboBox* pStyleComboBox; GroupComponent* pTextGroup; // Радиокнопки для выбора положения // поля ввода ползунка ToggleButton* pAboveRadioButton; ToggleButton* pBelowRadioButton; ToggleButton* pLeftRadioButton; ToggleButton* pRightRadioButton; // Предотвращает создание копии конструктора и оператора = TCentralComponent(const TCentralComponent&); const TCentralComponent& operator= (const TCentralComponent&); }; //-------------------------------------------- #endifЛистинг 13.1. Объявление класса компонента содержимого TCentralComponent (файл TCentralComponent.h)
В качестве закрытого члена класса TCentralComponent мы объявили переменную double dProgress. Именно на её изменение и будет отображать полоса выполнения pProgressBar.
Рассмотрим реализацию конструктора компонента содержимого нашего приложения пример 13.2.
#include "TCentralComponent.h" //-------------------------------- #define tr(s) String::fromUTF8(s) //------------------------------ TCentralComponent::TCentralComponent() : Component ("Central Component"), pProgressBar(0), pSlider(0), pStyleLabel(0), pStyleComboBox(0), pTextGroup(0), pAboveRadioButton(0), pBelowRadioButton(0), pLeftRadioButton(0), pRightRadioButton(0) { // Ползунок ещё не двигали - выполнение ноль dProgress = 0.0; // Создаём полосу выполнения, которая будет отображать // изменение переменной dProgress pProgressBar = new ProgressBar(dProgress); // Отображать процент выполнения в виде текста pProgressBar->setPercentageDisplay(true); addAndMakeVisible(pProgressBar); // Создаём ползунок pSlider = new Slider(L"Slider"); // Границы значений - от 0 до 100, // шаг - 0,1. pSlider->setRange(0, 100, 0.1); // Стиль - обычный горизонтальный ползунок pSlider->setSliderStyle(Slider::LinearHorizontal); // Текстовое поле ползунка расположено внизу, доступно для ввода значений, // размеры - 80 на 20. pSlider->setTextBoxStyle(Slider::TextBoxBelow, false, 80, 20); pSlider->addListener(this); addAndMakeVisible(pSlider); pStyleLabel = new Label (L"Style Label", tr("Стиль:")); pStyleLabel->setFont(Font(15.0000f, Font::plain)); pStyleLabel->setJustificationType(Justification::centredLeft); pStyleLabel->setEditable(false, false, false); pStyleLabel->setColour(Label::textColourId, Colours::black); pStyleLabel->setColour(Label::backgroundColourId, Colours::azure); addAndMakeVisible(pStyleLabel); // Выпадающий список со значениями стилей ползунка pStyleComboBox = new ComboBox(L"Style Combo Box"); pStyleComboBox->setEditableText(false); pStyleComboBox->setJustificationType(Justification::centredLeft); pStyleComboBox->setTextWhenNothingSelected(String::empty); pStyleComboBox->addListener(this); addAndMakeVisible(pStyleComboBox); // Добавляем стили... pStyleComboBox->addItem(L"LinearHorizontal", 1); pStyleComboBox->addItem(L"LinearVertical", 2); pStyleComboBox->addItem(L"LinearBar", 3); pStyleComboBox->addItem(L"Rotary", 4); pStyleComboBox->addItem(L"IncDecButtons", 5); // Выбран первый элемент списка pStyleComboBox->setSelectedItemIndex(0, false); pTextGroup = new GroupComponent (L"Text Group", tr("Положение текста")); addAndMakeVisible(pTextGroup); // Радиокнопки для выбора положения текстового поля ползунка pAboveRadioButton = new ToggleButton(L"Above RadioButton"); pAboveRadioButton->setButtonText(tr("Сверху")); pAboveRadioButton->setRadioGroupId(1234); pAboveRadioButton->addListener(this); addAndMakeVisible(pAboveRadioButton); pBelowRadioButton = new ToggleButton(L"Below RadioButton"); pBelowRadioButton->setButtonText(tr("Снизу")); pBelowRadioButton->setRadioGroupId(1234); pBelowRadioButton->setToggleState(true, true); pBelowRadioButton->addListener(this); addAndMakeVisible(pBelowRadioButton); pLeftRadioButton = new ToggleButton(L"Left RadioButton"); pLeftRadioButton->setButtonText(tr("Слева")); pLeftRadioButton->setRadioGroupId(1234); pLeftRadioButton->addListener(this); addAndMakeVisible(pLeftRadioButton); pRightRadioButton = new ToggleButton(L"Right RadioButton"); pRightRadioButton->setButtonText(tr("Справа")); pRightRadioButton->setRadioGroupId(1234); pRightRadioButton->addListener(this); addAndMakeVisible(pRightRadioButton); setSize(400, 400); } //----------------------------------------Листинг 13.2. Реализация конструктора класса компонента содержимого TCentralComponent (файл TCentralComponent.cpp)