Название: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: dqrest от Апрель 25, 2012, 09:20 Вообщем задача такова, нужно среди всей кучи QGraphicsScene найти QGraphicsLineItem с зеленым цветом, которая пересекается с заданной прямой. Считается, что в QGraphicsScene очень много QGraphicsItem(1 000 000), есть список номеров линий(их очень мало, порядка 20-30 штук) с зеленым цветом, следующие в том порядке, в котором вводились в QGraphicsScene, т.е. если порядок введения фигур в QGraphicsScene такой, что 0 - круг(черный); 1-линия(зеленая); 2 - круг(белый); 3-линия(черная) ; 4-линия(зеленая) , тогда список номеров зеленых линий ={1 ; 4;}. Но, Qt довольно плохо оптимизирован и при обращении к items() он сделает копию всех указателей. На 32-битной системе это займёт как минимум 4 МБ памяти. можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView, где QGraphicsScene A будет хранить все фигуры, а QGraphicsScene В только зеленые линии, обрабатывать надо только зеленые линии, фигуры QGraphicsScene A статичны. Далее после обработки зеленых линий их надо перекрасить в синий цвет и удалить его из QGraphicsScene В, добавив в QGraphicsScene A. Помогите, плиз. кстати, фоны в QGraphicsScene А и В одинаковы, достаточно, попиксельно на сцену А добавить сцену В.главное, чтобы зеленые линии были видны.
Название: Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: Bepec от Апрель 25, 2012, 09:36 Кхм... Возможно обижу. Но чёгой то у вас всё сумбурно и непонятно.
Что вам мешает проверить коллизии этой прямой? Название: Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: GreatSnake от Апрель 25, 2012, 10:22 Что вам мешает проверить коллизии этой прямой? Тебе же сказали:Но, Qt довольно плохо оптимизирован и при обращении к items() он сделает копию всех указателей. На 32-битной системе это займёт как минимум 4 МБ памяти. Название: Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: dqrest от Апрель 25, 2012, 10:25 все нормально)))все дело в производительности, зачем мне отслеживать коллизии 1 000 000 штук обэектов QGraphicsItem, в то время когда я буду все это отслежтвать только для 20-30 штук. понятно????
Название: Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: GreatSnake от Апрель 25, 2012, 10:43 Боюсь, что даже если ты и совместишь 2 сцены, то ничего не выиграешь, если не проиграешь вообще.
Дело в том, что получить доступ к элементам сцены без перебора и копии не получится никак. Способ проверить это - следующий: * создаёшь 2 своих сцены; привязываешь к view только 2-ю сцену * перегружаешь QGraphicsView::drawBackground() * вызываешь first_scene->render() * вызываешь базовый QGraphicsView::drawBackground() Название: Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: dqrest от Апрель 25, 2012, 10:47 спасибо)))выручил))по эксперементирую, посмотрим, что получится)))
Название: Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: _OLEGator_ от Апрель 25, 2012, 11:32 УжОс.
Зачем 2 сцены использовать, если есть другие варианты контейнеров для QGraphicsItem. Добавляешь все объекты на свою сцену, а нужные (зеленые линии в данном случае) можно хранить в отдельном списке и напрямую с ними работать без сцены. Контейнеров целая куча: Код
Название: Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: GreatSnake от Апрель 25, 2012, 11:35 Зачем 2 сцены использовать, если есть другие варианты контейнеров для QGraphicsItem. Ню-ню... А как ты их рендерить без сцены будешь?Добавляешь все объекты на свою сцену, а нужные (зеленые линии в данном случае) можно хранить в отдельном списке и напрямую с ними работать без сцены. Название: Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: _OLEGator_ от Апрель 25, 2012, 11:37 Ню-ню... А как ты их рендерить без сцены будешь? GreatSnake, читаем внимательно, да? Добавляешь все объекты на свою сцену, а нужные (зеленые линии в данном случае) можно хранить в отдельном списке и напрямую с ними работать без сцены. Название: Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: GreatSnake от Апрель 25, 2012, 11:41 Ну, может быть)
Название: Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView Отправлено: dqrest от Апрель 25, 2012, 15:11 спасибо))))можете закрывать тему!!!
|