Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: danquimby от Ноябрь 23, 2011, 14:57



Название: QGraphicsView QGraphicsScene
Отправлено: danquimby от Ноябрь 23, 2011, 14:57
Добрый вечер у меня есть вопрос.
у меня есть QGraphicsView(0,0,20,30) // к примеру
в который я помещаю QGraphicsScene scene(0,0 700, 700);

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

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

к примеру как в любой аркадной игре той же .. маррио


Название: Re: QGraphicsView QGraphicsScene
Отправлено: Bepec от Ноябрь 23, 2011, 15:45
Ну можно просто центрировать View - centerOn.
Я давно чтот о подобное делал, помню смутно. Но смысл - он центрирует относительно координат, соответственно сможешь передвигать как хочешь.

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


Название: Re: QGraphicsView QGraphicsScene
Отправлено: madRoger от Ноябрь 23, 2011, 16:08
Если сцена больше чем View, должны появиться скроллбары (не факт конечно. см. QAbstractScrollArea::vertical/horizontalScrollBarPolicy). Управляя скроллами, можно передвигаться по сцене.


Название: Re: QGraphicsView QGraphicsScene
Отправлено: danquimby от Ноябрь 23, 2011, 16:21
Ну можно просто центрировать View - centerOn.
Я давно чтот о подобное делал, помню смутно. Но смысл - он центрирует относительно координат, соответственно сможешь передвигать как хочешь.

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

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

просто у item была не просто x y а x - xscene и когда сцена движеться я делал просто xscene -= speed
а тут мб по другому решить.


Название: Re: QGraphicsView QGraphicsScene
Отправлено: danquimby от Ноябрь 23, 2011, 16:24
Если сцена больше чем View, должны появиться скроллбары (не факт конечно. см. QAbstractScrollArea::vertical/horizontalScrollBarPolicy). Управляя скроллами, можно передвигаться по сцене.

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

?? то что нужно ?


Название: Re: QGraphicsView QGraphicsScene
Отправлено: danquimby от Ноябрь 23, 2011, 16:35
спасибо, нашел


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


Название: Re: QGraphicsView QGraphicsScene
Отправлено: madRoger от Ноябрь 23, 2011, 16:36
Скроллы должны появиться автоматически. Управлять ими так QScrollBar::setValue(int).

При изменении значения скролла должно произойти смещение видимой части сцены.


Название: Re: QGraphicsView QGraphicsScene
Отправлено: madRoger от Ноябрь 23, 2011, 16:39
Цитировать
void QGraphicsView::ensureVisible ( const QRectF & rect, int xmargin = 50, int ymargin = 50 )

тоже вариант,  даже более правильный.