Опубликован: 13.07.2012 | Доступ: свободный | Студентов: 462 / 9 | Оценка: 5.00 / 5.00 | Длительность: 18:06:00
Тема: Программирование
Специальности: Программист
Лекция 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)