QGraphicsView:如何高效获取QGraphicsItems的视口坐标?
Posted
技术标签:
【中文标题】QGraphicsView:如何高效获取QGraphicsItems的视口坐标?【英文标题】:QGraphicsView: How to efficiently get the viewport coordinates of QGraphicsItems? 【发布时间】:2012-02-07 01:03:54 【问题描述】:有没有一种快速的方法来获取 QGraphicsView 中 QGraphicsItems 的视口坐标?我能想到的唯一方法是调用 QGraphicsView::items(),然后调用 QGraphicsItem::pos(),然后调用 QGraphicsView::mapFromScene。
不过,我一定遗漏了一些东西,因为项目已经转换为视口坐标以在 QGraphicsView 上正确定位它们,因此使用 mapFromScene 再次将其转换为视口坐标似乎效率低下——尤其是因为在我的情况下,这种情况经常发生并且对于许多项目。有没有更直接的方法?
【问题讨论】:
【参考方案1】:可能不会。一个QGraphicScene
可以同时被多个QGraphicsView
渲染。只保留一组视口坐标是没有意义的。
还有。 QGraphicsItems
之间的所有操作都直接在场景坐标中计算。来自视口的事件在处理之前转换为场景。关闭仅基于整数的视口也会降低精度。 QGraphicsView
只是一个场景的数学模型的表示。这不是实际模型。
也许你可以问一个更具体的问题,说明你到底想要完成什么。在场景坐标中可能有更好的方法。
【讨论】:
以上是关于QGraphicsView:如何高效获取QGraphicsItems的视口坐标?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 qgraphicsview 中的 qgraphicsitem 获取不同的上下文菜单?