“项目的视图几何和场景几何将分开维护”是什么意思?

时间:2015-01-12 10:17:02

标签: qt qgraphicsview qgraphicsitem qgraphicsscene

QGraphicsItem::ItemIgnoresTransformations标志的documentation表示

  

该项忽略继承的变换(即,其位置仍锚定到其父级,但忽略父级或视图旋转,缩放或剪切变换)。此标志对于使文本标签项保持水平和未缩放非常有用,因此如果转换视图,它们仍然可读。设置后,项目的视图几何体和场景几何体将单独维护。您必须调用deviceTransform()来映射坐标并检测视图中的碰撞。默认情况下,禁用此标志。这个标志在Qt 4.3中引入。注意:设置此标志后,您仍然可以缩放项目本身,并且该比例转换将影响项目的子项。

我当然已阅读QGraphicsItem detailsQGraphicsScene detailsQGraphicsView detailsGraphics View Framework

还有一些关于ItemIgnoresTransformations <{1}}标志的问题,例如Fixed size QGraphicsItems in multiple views?

但我仍然不理解粗体字的句子。这是什么意思?

PyQt: Moving multiple items with different ItemIgnoresTransformations flags中描述了引起这种担忧的问题,但也许这个问题太长了,或者乍一看太过于紧张。它更多的是移动物品。所以我在这里试着更好地专注。

1 个答案:

答案 0 :(得分:1)

想象一下父母旋转45度甚至有些纯粹的情况。由于当前项目忽略了这种转换,因此它会保持不变(不旋转) 现在问一下这对项目大小和位置有何影响?父可以维护项的几何(例如通过使用布局),但它不考虑此标志,因此将设置一些几何(以父单位为单位),但实际上项目场景rect可能看起来不同,因为项忽略转换和它不是旋转挤压缩放为父母。

所以从父母的角度来看,几何有一定的价值,但从形式上看,它是不同的。

最好是在实践中看看它是如何运作的。很难清楚地描述问题。