view raw
James James - 8 months ago 97
C++ Question

Should QGraphicsItem::boundingRect() include child bounding rects?

Googling suggests that it should.

But the dragdroprobot example implementation (on the parent Robot object) suggests not:

QRectF Robot::boundingRect() const
{
return QRectF();
}


Which is correct, or is there something more subtle going on?

Answer

Child items are painted directly by the scene not by the parent, and according to the documentation about boundingRect():

QGraphicsView uses this to determine whether the item requires redrawing.

So, if there is no drawing to do in the parent, there is no need to return a non-null bounding rectangle, even if the parent has child items. And if there is some drawing in the parent, it only needs to contain its own bounding rectangle.