2016-11-10 39 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); 在添加我的項目之前解決了問題,