Russian Qt Forum
Ноябрь 24, 2024, 16:55
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView (Прочитано 4868 раз)
dqrest
Гость
можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
:
Апрель 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 А и В одинаковы, достаточно, попиксельно на сцену А добавить сцену В.главное, чтобы зеленые линии были видны.
«
Последнее редактирование: Апрель 25, 2012, 09:24 от dqrest
»
Записан
Bepec
Гость
Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
Ответ #1 :
Апрель 25, 2012, 09:36 »
Кхм... Возможно обижу. Но чёгой то у вас всё сумбурно и непонятно.
Что вам мешает проверить коллизии этой прямой?
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
Ответ #2 :
Апрель 25, 2012, 10:22 »
Цитата: Bepec от Апрель 25, 2012, 09:36
Что вам мешает проверить коллизии этой прямой?
Тебе же сказали:
Цитата: dqrest от Апрель 25, 2012, 09:20
Но, Qt довольно плохо оптимизирован и при обращении к items() он сделает копию всех указателей. На 32-битной системе это займёт как минимум 4 МБ памяти.
Записан
Qt 5.11/4.8.7 (X11/Win)
dqrest
Гость
Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
Ответ #3 :
Апрель 25, 2012, 10:25 »
все нормально)))все дело в производительности, зачем мне отслеживать коллизии 1 000 000 штук обэектов QGraphicsItem, в то время когда я буду все это отслежтвать только для 20-30 штук. понятно?
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
Ответ #4 :
Апрель 25, 2012, 10:43 »
Боюсь, что даже если ты и совместишь 2 сцены, то ничего не выиграешь, если не проиграешь вообще.
Дело в том, что получить доступ к элементам сцены без перебора и копии не получится никак.
Способ проверить это - следующий:
* создаёшь 2 своих сцены; привязываешь к view только 2-ю сцену
* перегружаешь QGraphicsView::drawBackground()
* вызываешь first_scene->render()
* вызываешь базовый QGraphicsView::drawBackground()
Записан
Qt 5.11/4.8.7 (X11/Win)
dqrest
Гость
Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
Ответ #5 :
Апрель 25, 2012, 10:47 »
спасибо)))выручил))по эксперементирую, посмотрим, что получится)))
Записан
_OLEGator_
Гость
Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
Ответ #6 :
Апрель 25, 2012, 11:32 »
УжОс.
Зачем 2 сцены использовать, если есть другие варианты контейнеров для QGraphicsItem.
Добавляешь все объекты на свою сцену, а нужные (зеленые линии в данном случае) можно хранить в отдельном списке и напрямую с ними работать без сцены.
Контейнеров целая куча:
Код
C++ (Qt)
QVector
<
QGraphicsItem
*>
QList
<
QGraphicsItem
*>
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
Ответ #7 :
Апрель 25, 2012, 11:35 »
Цитата: _OLEGator_ от Апрель 25, 2012, 11:32
Зачем 2 сцены использовать, если есть другие варианты контейнеров для QGraphicsItem.
Добавляешь все объекты на свою сцену, а нужные (зеленые линии в данном случае) можно хранить в отдельном списке и напрямую с ними работать без сцены.
Ню-ню... А как ты их рендерить без сцены будешь?
Записан
Qt 5.11/4.8.7 (X11/Win)
_OLEGator_
Гость
Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
Ответ #8 :
Апрель 25, 2012, 11:37 »
Цитата: GreatSnake от Апрель 25, 2012, 11:35
Ню-ню... А как ты их рендерить без сцены будешь?
GreatSnake, читаем внимательно, да?
Цитата: _OLEGator_ от Апрель 25, 2012, 11:32
Добавляешь все объекты на свою сцену
, а нужные (зеленые линии в данном случае) можно хранить в отдельном списке и напрямую с ними работать без сцены.
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
Ответ #9 :
Апрель 25, 2012, 11:41 »
Ну, может быть)
Записан
Qt 5.11/4.8.7 (X11/Win)
dqrest
Гость
Re: можно ли вообще как-нибудь совместить 2 QGraphicsScene в один QGraphicsView
«
Ответ #10 :
Апрель 25, 2012, 15:11 »
спасибо))))можете закрывать тему!!!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...