Jake, you the man!
Yes Graphics Scene does have signals and slots and I am an idiot. I don't know how I came to the conclusion that it doesn't.
So now I have sub classed QGraphicsScene and I have re-implemented the
updateChange (const QList<QRect> rects) slot where I detect collisions by examining the area of the scene that has changed by getting all the items in the region that has changed and checking for any collisions.
I connected the sceneChanged(const QList<QRect> & rects) signal to it obviously.
Now I am going to Try and re-implement mouseMoveEvent()