如何找到 QGraphicsItem 变换后的大小

问题描述 投票:0回答:2

我正在 pyqt 代码的某些部分缩放 QGraphicsItem。在我的代码的另一部分中,当我调用 self.rect.adjusted(0, 0, 0, 0) 时,它返回转换前的尺寸。我的问题是如何找到变换后的尺寸?

qt pyqt qgraphicsitem
2个回答
5
投票

变换后可以请求sceneBoundingRect()或调用boundingRegion(),它用于比boundingRect()更高的精度。这个函数在QGraphicsItem中。在 QtAssistant 中,您可以阅读更多相关内容:

边界区域描述了项目视觉内容的粗略轮廓。尽管计算成本较高,但它也比boundingRect()更精确,并且有助于避免更新项目时不必要的重新绘制。这对于薄的项目(例如,线条或简单的多边形)特别有效。您可以通过调用 setBoundingRegionGranularity() 来调整边界区域的粒度。默认粒度为0;其中项目的边界区域与其边界矩形相同。 itemToDeviceTransform 是从项目坐标到设备坐标的转换。如果您希望此函数返回场景坐标中的 QRegion,您可以传递 sceneTransform() 作为参数。


0
投票

我也有这个问题,但没有得到答案。

假设你有一个 QGraphicsPixmapItem 使用 sceneBoundingRect() 获取 QrectF,您可以在其中检索 width() 和 height()

每次缩放对象时,调用此函数来获取值

有了这个,你还可以获得物体在场景中的位置

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.