Russian Qt Forum
Ноябрь 24, 2024, 12:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: Рисование в QGraphicScene  (Прочитано 23352 раз)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #30 : Март 16, 2011, 11:08 »

Цитировать
сейчас больше всего интересует как маршрут отображать
Всё зависит от частоты обновления траектории движения самолёта и длины самой траектории.
Можно в свойствах элемента самолёта держать список из QGraphicsLineItem и просто добавлять в начало этого списка новый QGraphicsLineItem.
Если "количество шагов траектории" лимитировано, то лишние просто удаляем с конца списка. Получится такая ползучая змея)
Если всё координаты держать в одном элементе, то может сильно проседать рендеринг, т.к. каждый раз придётся перерисовывать весь хвост, boundingRect() которого может быть довольно большим.
« Последнее редактирование: Март 16, 2011, 11:14 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
deaks
Гость
« Ответ #31 : Март 16, 2011, 11:32 »

логично!!!

сейчас как раз и наблюдаю проблемы с ->boundingRect.
Попробую сделать с массивом линий!огромное спасибо
Записан
deaks
Гость
« Ответ #32 : Март 17, 2011, 10:33 »

Ситуация такая:

при добавлении нового объекта происходит "захват" его. то есть где бы он не появился он всегда становится в центре экрана.
то есть он стоит в центре QGraphicsView

хочется убрать это. пробовал убирать фокус со сцены, но ничего не помогает. как быть?)
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #33 : Март 17, 2011, 10:58 »

Цитировать
то есть где бы он не появился он всегда становится в центре экрана.
А как делается позиционирование элемента? Через QGraphicsItem::setPos()?
По умолчанию все элементы позиционируются в 0,0. А судя по тому, что сцена отцентрирована, элементы будут в центре.
Записан

Qt 5.11/4.8.7 (X11/Win)
deaks
Гость
« Ответ #34 : Март 17, 2011, 11:18 »

да, через ->setPos
А когда тогда сделать относительное позиционирование?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #35 : Март 17, 2011, 11:21 »

Цитировать
А когда тогда сделать относительное позиционирование?
Можно как-нибудь по-русски и более развёрнуто задавать вопросы?
Записан

Qt 5.11/4.8.7 (X11/Win)
deaks
Гость
« Ответ #36 : Март 17, 2011, 12:04 »

Извините  Подмигивающий

В общем так, у меня есть бекграунд(радар) на фоне которого должны перемещаться объекты. то есть этот радар должен быть всегда в центре виджета.

а сейчас получается - добавляю объект и он становится в центре виджета
Записан
deaks
Гость
« Ответ #37 : Март 17, 2011, 12:16 »

- вот как сейчас это дело выглядит
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #38 : Март 17, 2011, 12:24 »

Коли начальные координаты сцены в центре, то и позиционирование элементов должно делаться с учётом этого.
Т.е. если нужно сдвинуть самолёт в самый левый верхий угол, то нужно его двигать через
setPos( -sceneRect().width() / 2, -sceneRect().height() / 2 )
Записан

Qt 5.11/4.8.7 (X11/Win)
deaks
Гость
« Ответ #39 : Март 17, 2011, 12:35 »

это само-собой, но суть в другом - видите на картинке самолет в центре виджета. а мне необходимо чтобы в центре виджета всегда был радар. получается что сцена закреплена
Записан
deaks
Гость
« Ответ #40 : Март 17, 2011, 12:36 »

одно из решений - постоянно перерисовывать радар в центре виджета. но это конечно же неверно
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #41 : Март 17, 2011, 12:41 »

Цитировать
мне необходимо чтобы в центре виджета всегда был радар.
Помести радар в начало сцены ( в 0,0 ) и рисуй эллипсы как я показывал здесь.

Цитировать
получается что сцена закреплена
Что значит "сцена закреплена"? Откуда такое понятие и такой вывод?
Записан

Qt 5.11/4.8.7 (X11/Win)
deaks
Гость
« Ответ #42 : Март 17, 2011, 14:32 »

а если я рисую радар фоном(не хочу заводить отдельный итем) в переопределенном методе QGraphicsView::drawBackground как мне его всегда перемещать в центр сцены?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #43 : Март 17, 2011, 15:13 »

Цитировать
а если я рисую радар фоном(не хочу заводить отдельный итем) в переопределенном методе QGraphicsView::drawBackground как мне его всегда перемещать в центр сцены?
Painter в drawBackground() уже перемещён в начальную координату. Это нужно учитывать, т.к. вся отрисовка делается относительно позиции painter-a.
В твоём случае позиция будет QPointF( sceneRect().width() / 2, sceneRect().height() / 2 )
« Последнее редактирование: Март 17, 2011, 15:16 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
deaks
Гость
« Ответ #44 : Март 17, 2011, 15:15 »

так что, радар обязательно делать отдельным итемом?
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.225 секунд. Запросов: 22.