如何修改QGraphicsView的原点为左上角
时间: 2023-10-29 10:06:07 浏览: 214
默认情况下,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像素。您可以根据需要更改这些值。
相关问题
如何让QGraphicsScene原点和QGraphicsView左上角对齐
在 `Qt` 的图形界面设计中,`QGraphicsScene` 和 `QGraphicsView` 的布局默认情况下并不保证它们的原点(也就是场景的 (0,0) 点)和视图的左上角对齐。若要实现这种对齐,你需要自定义一些布局逻辑或者利用 `QGraphicsView` 提供的一些功能。
一种常见的方法是通过设置 `QGraphicsView` 的视口模式(Viewport mode)。你可以选择 `Qt::AspectFit` 或 `Qt::NoViewport` 来保持场景的比例,并且手动调整视图的位置和大小,使得原点对齐:
```cpp
// 创建一个 QScence 和 QGraphicsView
QGraphicsScene scene;
QGraphicsView view(&scene);
// 设置 viewport 模式
view.setViewportMode(Qt::NoViewport);
// 让视口尺寸等于场景的大小
view.setSceneRect(scene.itemsBoundingRect());
// 移动和调整视图的顶部和左边距离
view.setPos(0, -scene.sceneRect().top()); // 避免重叠,让原点在视图上方
// 现在,原点应该位于视图的左上角了
```
上述代码首先关闭了视口模式,这意味着视图的大小会根据场景内容自动调整。接着,我们设置了视口的范围等于场景的所有内容,最后将视图的位置移动到场景的顶部,使得原点与视图的左上角对齐。
qgraphicsview坐标系
QGraphicsView的坐标系是以左上角为原点,x轴正方向向右,y轴正方向向下。[3] 这意味着视图坐标中的点(0,0)是指视图的左上角。在QGraphicsView中,所有的鼠标事件最开始都是以视图坐标表示。 而QGraphicsScene类的坐标系以中心为原点,即(0,0)点位于场景的中心。 而对于图元来说,它们使用自己的本地坐标系,通常以图元的中心为原点。 总之,QGraphicsView的坐标系是相对于视图本身,而QGraphicsScene和图元的坐标系是相对于场景和图元本身的。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [qt graphics view 坐标系](https://blog.csdn.net/wowocpp/article/details/111909001)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文