Qt在场景/视图中心添加项目

3

您好,

我正在尝试将QGraphicsItem添加到当前屏幕的中心位置。
我的QGraphicsScene非常大(10k X 10K),因此QGraphicsView无法完全显示它,会出现滚动条。

我找不到任何函数来返回当前屏幕的矩形,我在所有QGraphicsScene和QGraphicsView函数中搜索过。
有一些函数可以返回场景矩形(它返回一个10k X 10k的矩形,但是没有用),还有一些函数可以返回鼠标位置,但是我需要移动我的鼠标并单击菜单,这样鼠标将不再位于场景内,项目将生成在可见空间之外...

非常感谢。

1个回答

6

您应该将视口的左上角(0,0)映射到场景中。宽度和高度等于视口矩形的宽度和高度。

要获取当前屏幕的矩形,请尝试以下操作:

QRect exposedRect(graphicsView.mapToScene(0,0).toPoint(), graphicsView.viewport()->rect().size());

我认为你可以从这里开始处理。

问候并感谢您的回答。 不幸的是,它不起作用。我尝试了graphicsView.viewport().pos()和graphicsView.viewport()->rect().center(),这是我需要在场景中定位我的物品的方法,但它们没有将它们放在中心位置。我正在使用setTransformationAnchor(QGraphicsView.AnchorUnderMouse)和setResizeAnchor(QGraphicsView.AnchorUnderMouse),但我也尝试了AnchorViewCenter,但仍然无法正确定位它们... - Cristi Constantin
2
@Cristi Constantin:你尝试过使用graphicsView.mapToScene(graphicsView.viewport()->rect().center())来获取当前屏幕的中心点吗?这应该可以完成任务。 - zkunov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接