Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Smogg от Декабрь 08, 2013, 19:19



Название: QGraphicScene и отображение линий
Отправлено: Smogg от Декабрь 08, 2013, 19:19
У меня есть сцена, в которую добавлено сотня итемов. (пока разобрался лишь до сюда, как делать дальше - не понимаю)
Теперь мне нужно показывать отдельные итемы, а прочие прятать. Между показанными надо нарисовать линии. Потом перестраивать положение/видимость итемов и снова отрисовывать между ними линии.

Собственно, линии - это тоже итемы сцены и их над добавлять как path'ы? Можно как-нить просто рисовать  и стирать линии заданной ширины и положения?


Название: Re: QGraphicScene и отображение линий
Отправлено: Fregloin от Декабрь 08, 2013, 20:12
QGraphicsLineItem ...


Название: Re: QGraphicScene и отображение линий
Отправлено: Smogg от Декабрь 08, 2013, 20:32
QGraphicsLineItem ...
То есть все, что принадлежит сцене - это итемы, без исключений? И рисовать можно либо на итемах, (каковые потом трансформируются в соответствии с состоянием сцены), либо поверх всей сцены на поверхности QGraphicsView xthtp paintEvent (что возможно, но некрасиво)?


Название: Re: QGraphicScene и отображение линий
Отправлено: _OLEGator_ от Декабрь 09, 2013, 09:10
Можно не добавлять линии отдельно, а рисовать их в своем QGraphicsItem.
Но тогда 2 варианта: либо постоянно менять boundingRect() и позицию левого верхнего угла элемента, либо выставить у сцены полную перерисовку при каждом изменении и забить на boundingRect().


Название: Re: QGraphicScene и отображение линий
Отправлено: Fregloin от Декабрь 13, 2013, 09:54
можно их еще рисовать в backgroundPaint но насколько это будет эффективно... в каком то примере (кажется тот же Шлее) там как раз ваш случай описывался, итемы котороые соедены линиями да еще и в динамике перемещаются.


Название: Re: QGraphicScene и отображение линий
Отправлено: popper от Декабрь 13, 2013, 13:12
Вот еще хороший пример:
  http://qt-project.org/doc/qt-4.8/graphicsview-elasticnodes.html


Название: Re: QGraphicScene и отображение линий
Отправлено: AlexEx от Декабрь 13, 2013, 13:37
Линии можно попробовать рисовать в QGraphicsScene::drawBackground или QGraphicsScene::drawForeground