QGraphicsSceneBspTree出现的崩溃问题
现象描述:在移动或修改了某个图元之后,鼠标在界面上移动后会出现崩溃,提示信息如下:
崩溃点会发生在QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*)附近
这个问题其实是因为修改图元的BoundingBox时没有预先通知Scene,使得其通过Bsp树查找图元信息时出错导致的。
一个典型的错误代码如下:
QRectF GFYLineGraphicsItem::boundingRect() const
{
return shape().boundingRect();
}
QPainterPath GFYLineGraphicsItem::shape() const
{
QPainterPath oPath;
CLine lineData = m_LineInfo->lineData();
oPath.addLine(lineData.beginPoint(),lineData.end