PySide6中视图缩放时QGraphicsRectItem不随缩放的解决方法
解决QGraphicsRectItem不随视图缩放的问题
你只需要给目标QGraphicsRectItem设置ItemIgnoresTransformations标志,就能让它忽略视图的缩放变换,保持原始大小。
具体操作
创建矩形项后,调用setFlag()方法开启该标志即可:
from PySide6.QtWidgets import QGraphicsRectItem, QGraphicsScene # 创建矩形项 rect_item = QGraphicsRectItem(100, 100, 50, 50) # 设置忽略变换的标志 rect_item.setFlag(QGraphicsRectItem.ItemIgnoresTransformations, True) # 添加到场景 scene = QGraphicsScene() scene.addItem(rect_item)
原理说明
ItemIgnoresTransformations标志会让图形项不受视图的变换矩阵(缩放、旋转等)影响。不管你通过wheelEvent怎么缩放视图,这个矩形项都会保持初始化时的尺寸,不会跟着放大或缩小。
注意:设置该标志后,矩形项的位置仍基于场景坐标,视图平移时它会跟着场景移动。如果需要让它固定在视图的某个屏幕位置(比如右上角),可以额外监听视图的resizeEvent和滚动事件,手动更新item的场景坐标来匹配屏幕位置。
内容的提问来源于stack exchange,提问作者Min
相关产品推荐
相关产品推荐

