问题描述
最近在使用Qt的QGraphicsScene和View。在使用item移动、缩放的过程中,会碰到刷新不及时,导致有残影。
原因分析:
QGraphicsScene在item变化时会刷新,但是刷新的范围是item->boundingRect()。如果内容沿着boundingRect()边缘绘制,就有可能出现残影、拉丝的情况。
但是如果改变boundingRect的大小,内部绘制的所有项的坐标就要重新计算
解决方案:
在boungingRect()中, 返回值加上QMargins(1,1,1,1),可以避免残影和拉丝,同时也无需重新设置内部item的坐标。具体的margin的数值可以根据实际需要修改,最后保证boundingRect的能完全囊括item的内容