Новость из категории: Информация

Juce: вложенные компоновки

Содержание:
1. Введение;
2. Используем The Jucer;
3. Вложенные компоновки (Вы читаете данный раздел);
4. Бинарные ресурсы и фоновая графика.
Вложенные компоновки

Juce: вложенные компоновки

В Juce используется идеология, рассмотренная в предыдущей статье по U++, - иерархия виджетов соответствует иерархической вложенности их классов в коде, а не устанавливается вручную назначением «родителя», как, например, в Qt. Все виджеты нашего компонента равноправны и находятся на одном уровне иерархии. Если поместить на форму, например, компонент GroupComponent, то виджеты, помещенные внутрь его рамки, не станут его потомками. Их положение придется отредактировать вручную, устанавливая режим Relative to groupComponent.

Если используется, например, TabbedComponent, то каждая его вкладка - это независимый компонент, который нужно «нарисовать» отдельно. Свойство Content type каждой вкладки позволяет выбрать этот компонент по имени или вставить из файла, предварительно созданного в Jucer. При вставке из файла компонент сразу отображается на форме, однако редактировать его «на лету» нельзя (это подчеркивается белым фоном без направляющей сетки, см. рис. ниже). К счастью, в Jucer можно открывать несколько компоновок одновременно. Если изменить и сохранить вложенную компоновку, то результат сразу же будет виден во всех других компоновках, куда она входит.



Juce: вложенные компоновки
Работа с вложенными компоновками в Jucer

Проблемы размещения компонентов

Редактор компоновок в The Jucer страдает от общей проблемы многих тулкитов - отсутствия сайзеров и «резиновых» компоновок. Почему простая и элегантная идея сайзеров так непопулярна у создателей «альтернативных» тулкитов, совершенно непонятно. И U++, и Juce используют сложную и громоздкую систему логического позиционирования, однако наличие прекрасного визуального редактора несколько сглаживает недостатки такого подхода в Juce. Возможность указания относительного расстояния от других виджетов позволяет относительно легко создавать компоновки аналогичные обычным и табличным сайзерам, однако полностью заменить их она не может. Попробуйте, например, расположить по горизонтали три виджета, ко-торые должны менять ширину в пропорции 1:2:3 при растягивании окна не налезая друг на друга!

К счастью, нечто подобное сайзерам в Juce все-таки есть. Класс StretchableLayoutManager является по сути очень неуклюжим линейным сайзером. Метод layOutComponents этого класса принимает массив указателей на виджеты и упорядочивает их согласно ранее заданным минимальным, максимальным и предпочитаемым размерам:
//В конструкторе
// Первый виджет может иметь размер от 50 до 100 пикселов,
// предпочитаемый размер — 60% от размера контейнера myLayout.setItemLayout(0,50,100,-0.6);
// Второй виджет может иметь размер от 20% до 60% от размера // контейнера, предпочитаемый размер — 50 пикселов myLayout.setItemLayout(1,-0.2,-0.6,50);
// В методе resized()
// Создаем массив указателей на виджеты, которые хотим разместить Component* comps[] = { myComp1, myComp2 };
// Размещаем два компонента по вертикали в текущем компоненте myLayout.layOutComponents (comps, 2, 0, 0, getWidth(), J getHeight() ,true);

Если в Qt или GTK+ виджет просто добавляется в сайзер в конструкторе, а размеры являются свойствами самого виджета, то в Juce все сложнее. Нужно точно знать количество видже-тов в сайзере и их предпочитаемые размеры, а в методе resized() приходится создавать временный массив указателей. Класс StretchableLayoutManager недоступен в визуальном редакторе, что делает его применение еще более трудоемким. Тем не менее, даже такой сложный в применении сайзер лучше, чем ничего.



В данный момент Вам интересует не Juce, а Zaochnik.com отзывы (http://vk.com/zaochnik_com_otzyvy), т.к. в уже в этом году Вы планируете заказать написание дипломной работы опытному специалисту? В этом случае, Вам следует просто зайти в группу этого сервиса и прочитать отзывы, которые, кстати, носят исключительно положительны характер!

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх