2016-11-10 104 views
0

我有从QGraphicsItem派生的类。它包含的点的矢量WICH我在涂料绘制:使用_vertexes更改boundingRect后QGraphicsItem的位置

for(int i = 0; i < _vertexes.size(); i++) 
{ 
    ... 
    painter->drawEllipse(_vertexes[i], POINT_RADIUS, POINT_RADIUS); 
} 

当我在_vertexes在视图中添加点与该代码点的

prepareGeometryChange(); 
_vertexes.pop_back(); 

位置是变化的,boundingRect计算

如何保存积分位置?如果新增boundingRect较大,我不希望所有积分在添加新积分后改变位置。通过pos()返回始终相同的位置(0,0),但它可能位于屏幕的不同位置。

+1

听起来好像当边界矩形改变而不是实际改变位置时QGraphicsScene在'QGraphicsView'中滚动。尝试设置场景rect ['explicit'](http://doc.qt.io/qt-5/qgraphicsview.html#sceneRect-prop)。 –

+0

谢谢,sceneRect的设置帮助我解决问题 –

回答

1

我没有设置初始sceneRect,因此它在每个增加的场景项边界矩形之后重新计算并滚动。设置场景矩形ui->graphicsView->setSceneRect(x, y, width, heigh); 在添加我的项目之前解决了问题,