Russian Qt Forum

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



Название: можно ли ограничить размер QGraphicsScene ?
Отправлено: ZiZoid от Ноябрь 23, 2011, 18:33
Здравствуйте, товарищи. В документации к Qt4.7 в статье QGraphicsScene Class Reference, сказано что sceneRect - это  "...rectangle that grows when items are added to or moved in the scene, but never shrinks."  Так вот, скажите пожалусто, можно ли как то ограничить разрастание сцены,  так чтобы movable items можно было перемещать не бесконечно далеко, а  только в пределах отображаемой в QGraphicsView области?


Название: Re: можно ли ограничить размер QGraphicsScene ?
Отправлено: alexman от Ноябрь 23, 2011, 22:24
Можно контролировать перетаскивание самому.


Название: Re: можно ли ограничить размер QGraphicsScene ?
Отправлено: ZiZoid от Ноябрь 24, 2011, 01:15
А как это лучше сделать? какие события перехватывать?


Название: Re: можно ли ограничить размер QGraphicsScene ?
Отправлено: alexman от Ноябрь 24, 2011, 08:36
У сцены (или айтема) переопределить необходимые protected-методы, либо попробовать installEventFilter.


Название: Re: можно ли ограничить размер QGraphicsScene ?
Отправлено: iroln от Ноябрь 24, 2011, 12:12
Разрастание сцены ограничивается методом setSceneRect(). Ставишь, например scene->setSceneRect(0, 0, 100, 100) и сцена будет иметь фиксированный размер 100x100.

Ограничивать перемещение элементов тоже бывает полезно, это можно сделать, например, внутри класса элемента, например в обработчике события mouseMoveEvent или itemChange.

Вот, тема есть:
http://www.prog.org.ru/index.php?topic=4008.msg93442;topicseen#msg93442