在 QGraphicsView 中移动项目

Posted

技术标签:

【中文标题】在 QGraphicsView 中移动项目【英文标题】:Moving items in QGraphicsView 【发布时间】:2011-08-02 15:50:51 【问题描述】:

我是 Qt 的新手,尤其是 QGraphicsView。当我在其中旋转 Qgraphicspixmapitem 时,它似乎也在移动。我发现这与 QGraphicsView 调整以保持场景可见有关。 我删除了滚动条,因为我不需要它们,并且我希望场景的某些部分在 QGraphicsView 不改变其视图的情况下消失。换句话说,我希望我的QGraphicsView 中的所有内容都具有绝对位置,并且我不希望QGraphicsView 改变它的观点(或者不管它叫什么,请纠正我的术语)。

【问题讨论】:

【参考方案1】:

你需要的函数是QGraphicsView::setSceneRect:

此属性保存此视图可视化的场景区域。 场景矩形定义场景的范围,在视图的情况下,这意味着您可以使用滚动条导航的场景区域。 如果未设置,或者如果设置了空 QRectF,则此属性具有与 QGraphicsScene::sceneRect 相同的值,并且它随 QGraphicsScene::sceneRect 而变化。否则,视图的场景矩形不受场景影响。

因此,将视图的 sceneRect 设置为视图中所需的场景矩形,一切都应该很好。

【讨论】:

以上是关于在 QGraphicsView 中移动项目的主要内容,如果未能解决你的问题,请参考以下文章

QGraphicsView 放大或移动时不绘制行项目?

在 QGraphicsView 中创建自动滚动功能

在自定义 QGraphicsView 中移动 QGraphicsItem 问题

从 QGraphicsScene/QgraphicsItemGroup/QGraphicsView 中正确删除项目

在 QGraphicsView/QGraphicsScene 中移动 QGraphicsProxyWidget 中的嵌入式小部件

怎么在QGraphicsView上实现鼠标移动事件