Think about using GraphicsView. It would help you greatly with your task. You'd operate on objects instead of mathematical points. And you'd have fast collision detection embedded into the architecture.