QGraphicsItem :: boundingRect()是否应包含子绑定rects?

Jam*_*mes 5 c++ qt qgraphicsscene

谷歌搜索表明它应该.

但是dragdroprobot 示例实现(在父Robot对象上)建议不:

QRectF Robot::boundingRect() const
{
    return QRectF();
}
Run Code Online (Sandbox Code Playgroud)

这是正确的,还是有更微妙的事情发生?

ale*_*sdm 6

子项直接由场景绘制,而不是父项,并根据以下文档boundingRect():

QGraphicsView使用它来确定项目是否需要重绘.

因此,如果父项中没有绘图,则无需返回非空边界矩形,即使父项具有子项也是如此.如果父级中有一些绘图,则只需要包含自己的边界矩形.

  • 然后,例如,在父级中返回包含子项的形状或边界矩形,添加标志"QGraphicsItem :: ItemHasNoContents"并将子项堆叠在父项后面,以便父项在子项之前获取鼠标事件. (3认同)