我想将一个项目(前景)放在另一个项目(背景)上方的背景的某个坐标(x,y)上。背景是 转化,前景和背景没有亲子关系。
我会这样做:
foreground->setPos(foreground->mapToParent(
foreground->mapFromScene(background->mapToScene(x, y))))
首先确定变换背景后背景坐标在场景中的位置,然后将此坐标从场景映射到前景项的父坐标系,以进行setPos()
调用。
然而,这似乎与(至少在我的情况下)相同:
foreground->setPos(foreground->mapToParent(
foreground->mapFromItem(background, (x, y))))
mapFromItem(item)
是否考虑了应用于item
的任何转化?或者等价只是我整体情况的一个神器?
答案 0 :(得分:0)
如果您定义前景是背景的父级,如果前景的位置发生变化,Qt将自动翻译背景。
background->setParent(foreground);
background->setPos(20,20); // cooridinate system origin is pos() of foreground.
foreground->setPos(10,10); // background moves also