更改 boundingRect 后的 QGraphicsItem 位置
Posted
技术标签:
【中文标题】更改 boundingRect 后的 QGraphicsItem 位置【英文标题】:QGraphicsItem position after changing boundingRect 【发布时间】:2016-11-10 14:35:11 【问题描述】:我的类派生自QGraphicsItem
。它包含我在油漆中绘制的点向量:
for(int i = 0; i < _vertexes.size(); i++)
...
painter->drawEllipse(_vertexes[i], POINT_RADIUS, POINT_RADIUS);
当我使用此代码在_vertexes
中添加点时
prepareGeometryChange();
_vertexes.pop_back();
视图中点的位置正在改变,boundingRect
使用_vertexes
计算
如何保存积分位置?如果新的boundingRect
更大,我不希望在添加新点后所有点都改变位置。 pos()
总是返回相同的位置 (0, 0) 但它可能在屏幕的不同位置。
【问题讨论】:
听起来好像是QGraphicsScene
在边界矩形更改而不是项目实际更改位置时在QGraphicsView
内滚动。尝试设置场景矩形explicitly
。
谢谢,sceneRect的设置帮我解决了问题
【参考方案1】:
我没有设置初始sceneRect,因此在每个增加的场景项目边界矩形后重新计算和滚动。设置场景 rect by ui->graphicsView->setSceneRect(x, y, width, heigh);
在添加我的项目解决问题之前,
【讨论】:
以上是关于更改 boundingRect 后的 QGraphicsItem 位置的主要内容,如果未能解决你的问题,请参考以下文章
QGraphicsRectItem.boundingRect() 在移动期间未更新
QTransform 比例和 boundingRect.size() 之间的关系
OpenCV 的 cv2.boundingRect() 函数是如何工作的?