更改QGraphicsItem原点位置
时间: 2023-12-13 19:05:27 浏览: 95
QGraphicsItem自定义图元,拖动绘制,拖动拉伸缩放图元
可以通过以下步骤更改QGraphicsItem的原点位置:
1. 重写QGraphicsItem的boundingRect()函数,将其返回的矩形调整为以新的原点位置为中心的矩形。
2. 重写QGraphicsItem的paint()函数,将绘制操作进行平移,使得绘制的内容以新的原点位置为中心。
例如,如果你想要将QGraphicsItem的原点从默认的左上角移动到中心,可以这样做:
```python
class MyItem(QGraphicsItem):
def __init__(self):
super().__init__()
self.setFlag(QGraphicsItem.ItemIsMovable)
def boundingRect(self):
# 获取当前的boundingRect
rect = super().boundingRect()
# 调整为以中心为原点的矩形
return QRectF(-rect.width()/2, -rect.height()/2, rect.width(), rect.height())
def paint(self, painter, option, widget):
# 将绘制操作平移
painter.translate(-self.boundingRect().center())
# 绘制内容
painter.drawRect(self.boundingRect())
```
在上面的例子中,boundingRect()函数返回的矩形是以中心为原点的矩形,paint()函数中先将绘制操作平移,然后再绘制内容。这样就能实现将QGraphicsItem的原点位置调整为中心的效果。
阅读全文