Обработка событий в Juce
Содержание:
1.Введение (Вы читаете данный раздел);
2. Используем The Jucer;
3. Вложенные компоновки;
4. Бинарные ресурсы и фоновая графика.
Подавляющее большинство тулкитов для С++ (Gtk+, Qt, wxWidgets, FLTK, U++) используют для обработки событий функции обратного вызова (callbacks) в той или иной форме. В Juce используется другая идеология, основанная на передатчиках (broadcaster) и приемниках событий (event listeners). Различные виджеты являются передатчиками событий определенного типа. При нажатии на кнопку соответствующее событие «передается в эфир» и может быть перехвачено виджетом, который является приемником для событий именно этого типа.
В нашей программе приемником события кнопки может быть класс окна MainAppWindow. Чтобы сделать этот класс приемником, нужно унаследовать его от базового класса ButtonListener:
Теперь в классе имеется виртуальный метод buttonclicked, который перехватывает события кнопок и получает ссылку на кнопку-передатчик в виде параметра.
Переопределим его:
Сначала мы проверяем, какая кнопка отправила сигнал (кнопок в окне может быть несколько), а затем устанавливаем значение поля ввода. Остался последний штрих - указать, что кнопка посылает события именно тому приемнику, который мы назначили:
this ссылается на основное окно, которое и является приемником.
Такой подход к обработке событий имеет свои достоинства и недостатки. К достоинствам относится группировка кода для обработки событий одного типа в одном месте. Если мы реализуем, например, калькулятор, то логика всех кнопок будет сосредоточена в одном методе. С другой стороны, если логика - сложная, а кнопок - много, то метод-обработчик быстро становится слишком большим. В целом же по затратам труда на связывание событий с обработчиками подход Juce примерно равноценен использованию методов обратного вызова.
Планируете открыть платные курсы по освоению Juce? Значит, Вам потребуется печать брошюр дешево (http://www.abatprestige.ru/cifra-broshure.php)! Причем напечатаны они должны быть качественно и в цвете, т.к. первый шаг к успеху - привлечь внимание будущих клиентов! И, к счастью для Вас, именно такую печать осуществляет abatprestige.ru!
1.
2. Используем The Jucer;
3. Вложенные компоновки;
4. Бинарные ресурсы и фоновая графика.
Подавляющее большинство тулкитов для С++ (Gtk+, Qt, wxWidgets, FLTK, U++) используют для обработки событий функции обратного вызова (callbacks) в той или иной форме. В Juce используется другая идеология, основанная на передатчиках (broadcaster) и приемниках событий (event listeners). Различные виджеты являются передатчиками событий определенного типа. При нажатии на кнопку соответствующее событие «передается в эфир» и может быть перехвачено виджетом, который является приемником для событий именно этого типа.
В нашей программе приемником события кнопки может быть класс окна MainAppWindow. Чтобы сделать этот класс приемником, нужно унаследовать его от базового класса ButtonListener:
// Множественное наследование!
class MainAppWindow : public DocumentWindow,
public ButtonListener
class MainAppWindow : public DocumentWindow,
public ButtonListener
Теперь в классе имеется виртуальный метод buttonclicked, который перехватывает события кнопок и получает ссылку на кнопку-передатчик в виде параметра.
Переопределим его:
// В объявлении класса MainAppWindow
void buttonclicked (Button* button);
// В реализации MainAppWindow
void MainAppWindow: :buttonclicked (Button* button) {
if(button==result) {
edit1-setText(T("Кнопка нажата!"));
}
}
void buttonclicked (Button* button);
// В реализации MainAppWindow
void MainAppWindow: :buttonclicked (Button* button) {
if(button==result) {
edit1-setText(T("Кнопка нажата!"));
}
}
Сначала мы проверяем, какая кнопка отправила сигнал (кнопок в окне может быть несколько), а затем устанавливаем значение поля ввода. Остался последний штрих - указать, что кнопка посылает события именно тому приемнику, который мы назначили:
// В конструкторе MainAppWindow
result-addButtonListener(this)
result-addButtonListener(this)
this ссылается на основное окно, которое и является приемником.
Такой подход к обработке событий имеет свои достоинства и недостатки. К достоинствам относится группировка кода для обработки событий одного типа в одном месте. Если мы реализуем, например, калькулятор, то логика всех кнопок будет сосредоточена в одном методе. С другой стороны, если логика - сложная, а кнопок - много, то метод-обработчик быстро становится слишком большим. В целом же по затратам труда на связывание событий с обработчиками подход Juce примерно равноценен использованию методов обратного вызова.
Планируете открыть платные курсы по освоению Juce? Значит, Вам потребуется печать брошюр дешево (http://www.abatprestige.ru/cifra-broshure.php)! Причем напечатаны они должны быть качественно и в цвете, т.к. первый шаг к успеху - привлечь внимание будущих клиентов! И, к счастью для Вас, именно такую печать осуществляет abatprestige.ru!