qgraphicsitem将原点设置左上角
时间: 2024-05-16 12:14:53 浏览: 15
QGraphicsItem 默认的坐标原点是在其矩形区域的中心点,如果需要将原点设置在左上角,则需要在重载 QGraphicsItem 的 boundingRect 函数时,返回一个以左上角为原点的矩形区域。例如:
```cpp
class MyItem : public QGraphicsItem
{
public:
QRectF boundingRect() const override
{
return QRectF(0, 0, m_width, m_height);
}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
{
// 绘制代码...
}
private:
qreal m_width = 100;
qreal m_height = 100;
};
```
在这个例子中,boundingRect 函数返回了一个以左上角为原点,宽度为 m_width,高度为 m_height 的矩形区域。这样,QGraphicsItem 在场景中的位置就是以其左上角为原点的坐标系了。
相关问题
如何修改QGraphicsView的原点为左上角
默认情况下,QGraphicsView的原点位于左上角。如果您的QGraphicsView不是这种情况,可以通过以下方式将其更改为左上角:
1. 在构造函数中设置原点:
```
QGraphicsView::QGraphicsView(QWidget *parent)
: QGraphicsView(parent)
{
setAlignment(Qt::AlignLeft | Qt::AlignTop);
}
```
2. 使用setViewportMargins()函数将视口边距设置为负的场景矩形偏移量:
```
QGraphicsView *view = new QGraphicsView(scene, parent);
view->setViewportMargins(-100, -100, 0, 0);
```
这里将视口边距设置为(-100, -100, 0, 0)以将场景向右下角偏移100像素。您可以根据需要更改这些值。
如何设置QGraphicsItem原点位置
您可以使用`QGraphicsItem`的`setTransformOriginPoint()`函数来设置其原点位置。该函数需要传入一个 QPointF 类型的参数,表示原点坐标。例如,如果您想把原点设置为图形项的中心点,可以使用以下代码:
```cpp
QRectF boundingRect = myGraphicsItem->boundingRect(); // 获取图形项的边界矩形
QPointF center = boundingRect.center(); // 获取边界矩形的中心点坐标
myGraphicsItem->setTransformOriginPoint(center); // 设置原点为中心点
```
这样,当您对该图形项进行旋转、缩放等操作时,将以中心点作为原点进行变换。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)