Название: Перемещение QGraphicsItem по сцене без пересечений Отправлено: Ground от Май 16, 2015, 18:08 Добрый день!
Мне нужно на сцене перемещать мышью QGraphicsRectItem. Причем перемещать так, чтобы они не пересекались. Я переопределил mouseMoveEvent в QGraphicsRectItem, но события о движении мыши приходят рывками, т.е. может быть так, что в первом событии, координата мыши (1, 1), а во втором уже (10, 10). Код
И получается следующая ситуация (на картинке): (http://habrastorage.org/files/5b2/3be/b6c/5b23beb6c3dc444f9dc5e93bdab61dff.png) Как сделать так, чтобы при движении мыши, двигаемый QGraphicsRectItem не пересекал никакой другой Item? Чтобы останавливался у его границы? Название: Re: Перемещение QGraphicsItem по сцене без пересечений Отправлено: Igors от Май 17, 2015, 05:11 может быть так, что в первом событии, координата мыши (1, 1), а во втором уже (10, 10). Напрашивается интерполировать, напр есть пересечение в (10, 10) - попробовать поставить айтем в позицию (5, 5) и.т.д. Когда нашли лучшую точку по диагонали пытаемся улучшить по х, затем по y. Др словами найти ближайшую (к текущей позиции мыши) валидную точку. Только делать это надо до того как движение состоялосьНазвание: Re: Перемещение QGraphicsItem по сцене без пересечений Отправлено: Bepec от Май 17, 2015, 13:30 у вас скорее что то с программой. MouseMove приходит на каждую координату. Если она прыгает, то значит у вас программа подтормаживает.
PS хотя такая ситуация может быть и с планшетом, но тут уж извратиться надо :) |