Russian Qt Forum

Qt => Вопросы новичков => Тема начата: mus_zzz от Январь 25, 2016, 12:39



Название: Возможности QGraphicsScene
Отправлено: mus_zzz от Январь 25, 2016, 12:39
Интересует такой вопрос. Если я могу на виджете использовать графические примитивы,анимацию,переходы на прямую без сцены,то какие преимущества дает возможность использования QGraphicsScene?


Название: Re: Возможности QGraphicsScene
Отправлено: Zerkin от Январь 25, 2016, 12:50
Из документации

Цитировать
Класс QGraphicsScene предоставляет поверхность для управления большим числом графических 2D элементов.

Этот класс служит как контейнер для QGraphicsItems. Он используется вместе с QGraphicsView для отображения графических объектов, таких как линии, прямоугольники, текст или даже собственные элементы на двухмерной поверхности. QGraphicsScene входит в каркас графического представления.

QGraphicsScene также предоставляет функциональность, которая позволит вам эффективно определять положение элементов и какие элементы видимы внутри произвольной области сцены. С виджетом QGraphicsView вы можете или отобразить всю сцену, или увеличить и отобразить только часть сцены.

........

QGraphicsScene использует алгоритм индексации для эффективного управления положением элементов. По умолчанию используется дерево BSP (Binary Space Partitioning); этот алгоритм удобен для больших сцен где большинство элементов остаются статичными (т.е., не перемещаются). Вы можете отключить этот индекс вызвав setItemIndexMethod(). Для получения дополнительной информации о доступных алгоритмах индексации смотрите свойство itemIndexMethod.

.......

Одной из сильнейших сторон QGraphicsScene является её возможность эффективно определять положение элементов. Даже с миллионами элементов на сцене функции items() могут определять положение элемента в течении нескольких миллисекунд. Есть несколько перегруженных функций для items(): одна находит элементы в определённой позиции, другая находит элементы внутри или в пересечении с полигоном или прямоугольником, и так далее. Список возвращаемых элементов отсортирован в порядке расположения, первым элементом списка будет верхний элемент. Для удобства также есть функция itemAt(), которая возвращает верхний элемент в заданной точке.

QGraphicsScene управляет информацией о выделении для сцены. Чтобы выбрать элементы, вызовите setSelectionArea(), а чтобы очистить текущее выделение вызовите clearSelection(). Вызовите selectedItems() чтобы получить список всех выделенных элементов.

Оптимизация. Удобство. Ну, собственно, возможность не придумывать велосипеды.

Выделил вам в тексте основное, на что обратить внимание.


Название: Re: Возможности QGraphicsScene
Отправлено: mus_zzz от Январь 25, 2016, 13:40
спс