2013-04-11 72 views
0

作为标题线索,我尝试通过旋转组本身或者迭代子项来旋转组边界矩形。Qt场景项目组边界矩形没有跟随旋转

我是否需要对组进行某种更新来限制组件的大小?当视图显示它时调整形状?

片段为PySide:

R1 = scene.addRect(itemGroup.boundingRect()) 
R1.setPos(itemGroup.pos()) 

scene.addRect(itemGroup.boundingR()) 

# case 1 - Rotate group through iteration 
for item in itemGroup.childItems() : 
    item.rotate(90) 

# case 2 - Rotete whole group 
itemGroup.rotate(90) 

R2 = scene.addRect(itemGroup.boundingRect()) 
R2.setPos(itemGroup.pos()) 
+0

我不知道这是否与您的probem链接,但您应该使用QGraphicsRectItem(http://qt-project.org/doc/qt- 4.8/qgraphicsrectitem.html)而不是使用“addRect”。图形项目类更健壮。 – halflings 2013-04-11 22:17:54

回答

1

,那是因为你的情况包围矩形是当地的一个项目,所以转动不改变它。您应该将rect映射到场景以获取位于全局坐标系中的矩形位置

+0

+1,但请你能解释一下映射的主要目的是什么? – Alex 2013-04-12 11:15:28

+1

嗯,这是围绕整个QT GraphicsView基础设施的一般想法..虽然有时它会导致很奇怪的结果。任何GraphicsViewItem都有一个位置,并且这个位置是相对于父项(如果项目有父项)或场景如果它是'顶级“项目。每个项目都可以相对于它的父项进行变换(意味着旋转,缩放或移位)。假设你有一个带矩形的矩形(0,0,100,100)。它在(场景全局)(100,100)处有一个位置,所以在应用旋转变换后,它将围绕_its_(0,0)旋转,但仍具有(0,0,100,100)维。 – evilruff 2013-04-15 14:55:14