LINUX.ORG.RU

Qt QGraphicsItem узнать координату при перемещении

 ,


0

1

Доброго времени суток! Передо мной стоит задача - при перемещении объектов по сцене узнавать их координаты. Объект класса, наследуемого от класса QGraphicsItem с переопределенным методом перерисовки.

С-но, проблему перемещения мышью я уже решил. Теперь мне нужно, чтобы на диалоге текст метки отображал координаты при перемещении объекта.

Не совсем понятно, где писать обработчик. По сути, нам необходимо менять текст метки, только если пользователь нажал на объект и попытался его перетянуть. Т.е. задействовано движение мыши. Пробовал поискать слоты в диалоге связаные с мышью и не нашел. Не ругайте пожалуйста за нубский вопрос, но как это реализовать? Мне копать в сторону переопределения метода отрисовки диалога и там постоянно запрашивать координаты объекта? Или нужно искать обработку действий мыши? Подскажите плз.


Подозреваю, что копать надо в сторону eventFilter для события QEvent::MouseMove QEvent::GraphicsSceneMouseMove.

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

У QGraphicsItem не может быть ни слотов, ни сигналов, так как он не унаследован от QObject. Можно попробовать потыкать QGraphicsObject.

timon-ltv
()
Ответ на: комментарий от timon-ltv

Да, но можно получить через QGraphicsScene.items() объекты и узнать их координаты. Вопрос в том, где это лучше делать.

gwyllum
() автор топика

С-но, проблему перемещения мышью я уже решил

А как решили, не через drag&drop?

Я делал через d&d и перехватывал QGraphicsScene::dragMoveEvent и т.п. Позиция передается как свойство события.

no-such-file ★★★★★
()

Переопределяешь virtual QVariant itemChange ( GraphicsItemChange change, const QVariant & value )

там ловишь: QGraphicsItem::ItemPositionChange, если надо ДО перемещения. QGraphicsItem::ItemPositionHasChanged, если надо ПОСЛЕ перемещения.

В первом случае можно даже подправить новую координату, например, запретить перемещение по y.

grondek
()

Кстати, если все объекты на сцене - наследованные, то можно наследовать и от QGraphicsItem и от QObject. Тогда можно спокойно делать сигналы и слоты.

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