Since the OP hasn't posted anything here in over 7 years, I doubt he is going to answer your question.
As the OP states, QGraphicsItem::collidesWithItem() will probably not work well, since it uses the bounding rectangles for each of the groups. You could try using the QGraphicsItem::boundingRegion() method to retrieve the QRegion for each group and calling QRegion::intersects() to see if the two QRegions are overlapping. However, QGraphicsItemGroup does not re-implement boundingRegion(), so it might simply return boundingRect() as a QRegion so you would be out of luck there. You will have to test this.
If you have to look at each child item inside the two groups, you can do a little bit of optimizing. If collidesWithItem() return false, then you know that there cannot be any collision between any child items in the groups.
If there is a collision between the two groups, you do not have to examine every pair of children in each group. You have to examine only the children which lie within the intersection of the two group bounding rects (QRectF::intersected()).
Bookmarks