LINUX.ORG.RU

Баг с автоматической перемоткой QGraphicsScene

 ,


0

1

В QGraphicsScene при перемещении прямоугольников (и других итемов) происходит перемотка всей сцены целиком;

setResizeAnchor(QGraphicsView::NoAnchor); setAlignment(Qt::AlignAbsolute);

не помогли

проблема проявляется:

rectangle = addRect(0, 0, 10, 10);
rectangle->setX(300)

проблема не проявляется

rectangle = addRect(0, 0, 10, 10);
rectangle->setX(100)

Как с этим бороться?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Баг в QGraphicsView:

sceneRect : QRectF This property holds the area of the scene visualized by this view. The scene rectangle defines the extent of the scene, and in the view’s case, this means the area of the scene that you can navigate using the scroll bars. If unset, or if a null QRectF is set, this property has the same value as QGraphicsScene::sceneRect, and it changes with QGraphicsScene::sceneRect. Otherwise, the view’s scene rect is unaffected by the scene.

По умолчанию, sceneRect в QGraphicsView привязан к sceneRect в QGraphicsScene, в результате вся вьюха расползается при любом неудачном перемещении виджетов.

Исправляется так:

QGraphicsView* view;
...
view->setSceneRect(0, 0, 5000, 5000); 

Обратите внимание, что использовать надо именно метод в QGraphicsView, а не метод с таким же названием в QGraphicsScene

next_time ★★★★★
() автор топика
Ответ на: комментарий от next_time

в результате вся вьюха расползается при любом неудачном перемещении виджетов

Поэтому я всегда использую свою реализацию. QGraphicsScene слишком переусложнён.

RazrFalcon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.