我正在 pyqt 代码的某些部分缩放 QGraphicsItem。在我的代码的另一部分中,当我调用 self.rect.adjusted(0, 0, 0, 0) 时,它返回转换前的尺寸。我的问题是如何找到变换后的尺寸?
变换后可以请求sceneBoundingRect()或调用boundingRegion(),它用于比boundingRect()更高的精度。这个函数在QGraphicsItem中。在 QtAssistant 中,您可以阅读更多相关内容:
边界区域描述了项目视觉内容的粗略轮廓。尽管计算成本较高,但它也比boundingRect()更精确,并且有助于避免更新项目时不必要的重新绘制。这对于薄的项目(例如,线条或简单的多边形)特别有效。您可以通过调用 setBoundingRegionGranularity() 来调整边界区域的粒度。默认粒度为0;其中项目的边界区域与其边界矩形相同。 itemToDeviceTransform 是从项目坐标到设备坐标的转换。如果您希望此函数返回场景坐标中的 QRegion,您可以传递 sceneTransform() 作为参数。
我也有这个问题,但没有得到答案。
假设你有一个 QGraphicsPixmapItem 使用 sceneBoundingRect() 获取 QrectF,您可以在其中检索 width() 和 height()
每次缩放对象时,调用此函数来获取值
有了这个,你还可以获得物体在场景中的位置
希望有帮助。