【问题标题】:Does QGraphicsScene, or QGraphicsItem, store scene coordinates?QGraphicsScene 或 QGraphicsItem 是否存储场景坐标?
【发布时间】:2016-04-20 06:46:49
【问题描述】:

我以编程方式移动了我的 QGraphicsScene 中的项目,但它们最终出现在错误的位置。它们最终位于坐标 (2x, 2y),而不是 (x, y)。

我在某处改变了错误的东西。 我同时处理场景和单个项目,通过指针访问两者。

QGraphicsItem::pos() 可以为您提供场景坐标中的位置(它没有父级)。 QGraphicsScene 包含场景中所有项目的列表: QList<QGraphicsItem *> QGraphicsScene::items () const.

我的问题:项目在场景中的位置信息 - 它是存储在场景中还是存储在项目中?

谢谢!

【问题讨论】:

  • 发布您用于设置项目位置的实际代码。我们不是物理学家。 :)

标签: c++ qt qgraphicsitem qgraphicsscene


【解决方案1】:

在项目中,即在 qgraphicsitem pimpl 类中。打开qgraphicsitem_p.h,你会发现QPointF pos member。

【讨论】:

  • 谢谢你,诺米纳斯。我确实在 qgraphicsitem_p.h 中找到了一个 QPointF pos 成员。如果场景坐标发生变化......我猜场景中的所有项目都必须更新这些值。
  • 为此,我发现 QGraphicsScene 的项目索引基于 QGraphicsItem::boundingRect() (它实际上是虚拟的)。我认为项目索引对于查找项目很有用。
猜你喜欢
  • 2021-09-29
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多