QGRaphicsItem 获取已存在的矩形的坐标
时间: 2024-05-02 14:17:31 浏览: 47
如果你已经有一个QGraphicsItem对象,并且这个对象是一个矩形,你可以使用boundingRect()函数来获取这个矩形的坐标。
例如,如果你有一个QGraphicsRectItem对象rectItem,你可以使用下面的代码获取矩形的坐标:
```
QRectF rect = rectItem->boundingRect();
qreal x = rect.x();
qreal y = rect.y();
qreal width = rect.width();
qreal height = rect.height();
```
这里,我们首先使用boundingRect()函数获取矩形对象的边界矩形(QRectF类型),然后使用这个矩形的x()、y()、width()和height()函数获取矩形的左上角坐标和宽度、高度。
相关问题
qt QGraphicsItem设置矩形大小,中心坐标不变
可以使用`QGraphicsItem::setRect()`函数来设置`QGraphicsItem`的矩形大小,同时保持中心坐标不变。该函数的参数为一个`QRectF`类型的矩形,可以通过`QGraphicsItem::rect()`函数获取当前`QGraphicsItem`的矩形。
以下是一个简单的示例代码,其中`item`为`QGraphicsItem`对象,将其矩形大小设置为原来的两倍,但中心坐标不变:
```cpp
QRectF rect = item->rect();
rect.setWidth(rect.width() * 2);
rect.setHeight(rect.height() * 2);
rect.moveCenter(item->boundingRect().center());
item->setRect(rect);
```
如何改变QGraphicsItem的边界矩形
可以通过重写`QGraphicsItem`的`boundingRect()`函数来改变边界矩形。`boundingRect()`函数返回一个矩形,表示`QGraphicsItem`在场景坐标系下的边界矩形。默认情况下,`boundingRect()`返回的矩形是根据`QGraphicsItem`的`shape`属性自动计算的。如果你想要手动设置`boundingRect()`返回的矩形,可以重写`boundingRect()`函数并返回自定义的矩形。
例如,如果你想将`boundingRect()`返回的矩形设置为一个更大的矩形,可以这样实现:
```python
class MyItem(QGraphicsItem):
def __init__(self):
super().__init__()
def boundingRect(self):
return QRectF(-50, -50, 100, 100) # 设置一个较大的矩形
```
在这个例子中,`boundingRect()`返回的矩形的左上角坐标是`(-50,-50)`,宽度和高度都是`100`,因此这个矩形比默认的边界矩形更大。你也可以根据自己的需要设置自定义的边界矩形。
阅读全文