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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsView QGraphicsScene  (Прочитано 4971 раз)
danquimby
Гость
« : Ноябрь 23, 2011, 14:57 »

Добрый вечер у меня есть вопрос.
у меня есть QGraphicsView(0,0,20,30) // к примеру
в который я помещаю QGraphicsScene scene(0,0 700, 700);

и в scene я запихиваю items

вопрос в том , как сделать что бы отображение (а оно не все выводит, а кусочек)
как бы перемещалось, показываю другие кусочки scene

к примеру как в любой аркадной игре той же .. маррио
Записан
Bepec
Гость
« Ответ #1 : Ноябрь 23, 2011, 15:45 »

Ну можно просто центрировать View - centerOn.
Я давно чтот о подобное делал, помню смутно. Но смысл - он центрирует относительно координат, соответственно сможешь передвигать как хочешь.

PS Помоему игры сделаны немного не так, там все подгружается по мере приближения +- 2 экрана.
Записан
madRoger
Гость
« Ответ #2 : Ноябрь 23, 2011, 16:08 »

Если сцена больше чем View, должны появиться скроллбары (не факт конечно. см. QAbstractScrollArea::vertical/horizontalScrollBarPolicy). Управляя скроллами, можно передвигаться по сцене.
« Последнее редактирование: Ноябрь 23, 2011, 16:19 от madRoger » Записан
danquimby
Гость
« Ответ #3 : Ноябрь 23, 2011, 16:21 »

Ну можно просто центрировать View - centerOn.
Я давно чтот о подобное делал, помню смутно. Но смысл - он центрирует относительно координат, соответственно сможешь передвигать как хочешь.

PS Помоему игры сделаны немного не так, там все подгружается по мере приближения +- 2 экрана.

когда то я делал по другому когда работал с 2d движками.

просто у item была не просто x y а x - xscene и когда сцена движеться я делал просто xscene -= speed
а тут мб по другому решить.
Записан
danquimby
Гость
« Ответ #4 : Ноябрь 23, 2011, 16:24 »

Если сцена больше чем View, должны появиться скроллбары (не факт конечно. см. QAbstractScrollArea::vertical/horizontalScrollBarPolicy). Управляя скроллами, можно передвигаться по сцене.

http://doc.qt.nokia.com/4.7/qabstractscrollarea.html#setHorizontalScrollBar

?? то что нужно ?
Записан
danquimby
Гость
« Ответ #5 : Ноябрь 23, 2011, 16:35 »

спасибо, нашел


void QGraphicsView::ensureVisible ( const QRectF & rect, int xmargin = 50, int ymargin = 50 )
Прокручивает содержимое области просмотра чтобы был виден прямоугольник сцены rect с полями xmargin и ymargin, указанными в пикселах. Если указанный прямоугольник не может быть достигнут, содержимое прокручивается до ближайшего годного положения. Значение по-умолчанию для обоих полей равно 50 пикселов
Записан
madRoger
Гость
« Ответ #6 : Ноябрь 23, 2011, 16:36 »

Скроллы должны появиться автоматически. Управлять ими так QScrollBar::setValue(int).

При изменении значения скролла должно произойти смещение видимой части сцены.
Записан
madRoger
Гость
« Ответ #7 : Ноябрь 23, 2011, 16:39 »

Цитировать
void QGraphicsView::ensureVisible ( const QRectF & rect, int xmargin = 50, int ymargin = 50 )

тоже вариант,  даже более правильный.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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