Опубликован: 13.07.2012 | Уровень: специалист | Доступ: платный
Лекция 13:

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

< Лекция 12 || Лекция 13: 123 || Лекция 14 >

Кроме того, компонент содержимого нашей программы включает выпадающий список для выбора пользователем стиля ползунка и 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)
< Лекция 12 || Лекция 13: 123 || Лекция 14 >
Иван Иванов
Иван Иванов
Россия
Александр Тырин
Александр Тырин
Россия