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

Начало работы с Juce. Создание приложений. Главное окно

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >

Заметим, что число кнопок заголовка окна (а также их положение) можно изменить вызовом метода void DocumentWindow::setTitleBarButtonsRequired (int requiredButtons, bool positionTitleBarButtonsOnLeft). Если последний аргумент функции принимает значение true, кнопки будут располагаться не у правого края заголовка окна, а у левого ( пример 2.9, рис. 2.2).

#include "TMainForm.h"
//---------------------------------------------------------------------
TMainForm::TMainForm() : DocumentWindow(
        JUCEApplication::getInstance()->getApplicationName(),
        Colours::azure,
        DocumentWindow::allButtons)
{
    centreWithSize(400, 200);
    // Запрещаем изменение размеров окна посредством растягивания мышью
    setResizable(false, false);
    setTitleBarButtonsRequired(minimiseButton | DocumentWindow::closeButton,
                               true);
    setVisible(true);
}
//---------------------------------------------------------------------
Листинг 2.9. Конструктор класса TMainForm (окно с неизменяемыми размерами, кнопки расположены у левого края заголовка)
 Окно с атипичным расположением кнопок заголовка

Рис. 2.2. Окно с атипичным расположением кнопок заголовка

В качестве последнего параметра конструктор класса принимает булеву переменную bool addToDesktop. В случае, если переменная принимает значение true, окно автоматически добавляется на рабочий стол, в противном случае вы можете использовать окно в качестве дочернего. По умолчанию переменная принимает значение true.

Класс DocumentWindow наследует классы компонента (Component, см. "Компонентная модель Juce. Общие свойства компонентов" ) и окна с изменяемыми размерами (ResizableWindow). В конструкторе класса TMainForm ( пример 2.6) мы вызываем следующие методы, унаследованные от этих классов:

  • void Component::centreWithSize(int width, int height) — задаёт линейные размеры компонента (ширина и длина) и помещает его в центре родительского компонента. В том случае, когда родительского компонента нет (наш случай), окно помещается в центр рабочего стола.
  • void ResizableWindow::setResizable(bool shouldBeResizable, bool useBottomRightCornerResizer) — в зависимости от принимаемых параметров показывает, может ли пользователь изменять размеры окна потягиванием мыши (да, если shouldBeResizable принимаент значение true) и следует ли отображать виджет-ресайзер в правом нижнем углу окна (если виджет отображается, то пользователь может изменять размеры окна посредством потягивания мышью за него, но не за границу окна).

    Вид окна, в котором все параметры принимают значения true, показан на рисунке 2.3 .

    Окно с изменяемыми размерами (размеры изменяются с помощью специального виджета в его правом нижнем углу

    Рис. 2.3. Окно с изменяемыми размерами (размеры изменяются с помощью специального виджета в его правом нижнем углу
  • virtual void Component::setVisible(bool shouldBeVisible) — в случае, если аргумент принимает значение true, метод делает окно видимым и доступным для манипуляций пользователя.

В заключение отметим, что по умолчанию текст заголовка окна ориентирован по центру. В том случае, если мы хотим, чтобы он был выровнен по левому краю, необходимо в конструкторе класса окна вызвать метод void DocumentWindow::setTitleBarTextCentred(bool textShouldBeCentred) присвоив параметру функции значение false ( рис. 2.4)

Приложение Juce с выравниванием заголовка окна по левому краю

Рис. 2.4. Приложение Juce с выравниванием заголовка окна по левому краю
< Лекция 1 || Лекция 2: 12345 || Лекция 3 >
Иван Иванов
Иван Иванов
Россия
Александр Тырин
Александр Тырин
Россия