2016-11-10 4 views
0

QGraphicsItemから派生したクラスがあります。これは、点のベクトルIは塗料に描くWICH含ま:ビュー内の点のこのコードQGraphicsBoundRectを変更した後の商品位置

prepareGeometryChange(); 
_vertexes.pop_back(); 

位置が変化していると私は_vertexesにポイントを追加するとき

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

boundingRect_vertexes

を使用して計算されます

ポイントの保存方法は?新しいboundingRectが大きい場合は、新しいポイントを追加した後、すべてのポイントがポジションを変更しないようにします。 pos()によって、常に同じ位置(0、0)が返されますが、画面の別の位置にある可能性があります。

+1

ですね。シーンをrect ['explicit'](http://doc.qt.io/qt-5/qgraphicsview.html#sceneRect-prop)に設定してみてください。 –

+0

ありがとうございます、sceneRectの設定は私が問題を解決するのに役立ちます –

答えて

1

私は初期のsceneRectを設定しません。そのため、増えていくシーン項目の境界矩形の後に再計算され、スクロールされました。それは `QGraphicsScene`がバウンディング矩形の変更ではなく、アイテムが実際に位置を変え` QGraphicsView`以内にスクロールさだかのように私の項目を追加する前にui->graphicsView->setSceneRect(x, y, width, heigh); によってシーンRECTを設定すると、問題を解決し、

関連する問題