Название: Линия с маркерами Отправлено: Achernar от Декабрь 12, 2013, 08:54 Здраствуйте!
Пробую сделать линию с маркерами, с помощью которых можно менять точки. Код: void Line::hoverEnterEvent(QGraphicsSceneHoverEvent *) В hoverEnterEvent создаю два маркера, Код: void Line::hoverLeaveEvent(QGraphicsSceneHoverEvent *) в hoverLeaveEvent удаляю. Код: bool Line::sceneEventFilter(QGraphicsItem *watched, QEvent *event) В sceneEventFilter отлавливаю событие нажатие, сохраняю начальные точки в маркерах и двигаю первую или вторую точку. Пока линия находится на текущем месте работает все как надо, но если линию передвинуть, то получаются какие-то расстояния между точками и мышью, судя по всему проблемы с системой координат. Название: Re: Линия с маркерами Отправлено: Achernar от Декабрь 13, 2013, 06:33 Переформулирую вопрос:
В сцену добавляем линию, как я понимаю в этом случае совпадают координаты линии относительно сцены и собственные координаты и перемещаю один из концов: Код: setLine(QLine(event->scenePos(), line().p2())); Работает правильно. Теперь перемещаю линию мышью, меняются координаты относительно сцены и работает не так, как надо. Как правильно задать координаты в этом случае? Название: Re: Линия с маркерами Отправлено: Fregloin от Декабрь 13, 2013, 10:01 могу дать свою реализацию, но она довольно сложна и в вырезаном виде врядли будет работать. суть в том, что для редактирования такой полигональной линии с маркерами у меня создается отдальный элемент-редактор, который рисуется над этой линией и в своих событиях мыши оперирует анкерами(маркерами) редактроуемого объекта.
Название: Re: Линия с маркерами Отправлено: Achernar от Декабрь 13, 2013, 10:11 Мне бы попроще, хотелось обрабатывать прямо из объекта, но с координатами никак не могу разобраться.
Название: Re: Линия с маркерами Отправлено: Fregloin от Декабрь 16, 2013, 16:28 Как показала практика лучше сделать отдельный редактор маркеров, нежели их обрабатывать в самом объекте. По крайней мере если таких объектов много.
|