2013-01-27 2 views
1

QPolygonF의 정점을 가져와야합니다. 내가 그것을해야합니까 moved.How이 지금QPolygonF의 정점 얻기

class Example(QtGui.QGraphicsScene): 
    def block(self): 
     self.bpoint1 = QtCore.QPointF(150 , 150) 
     self.bpoint2 = QtCore.QPointF(200 , 150) 
     self.bpoint3 = QtCore.QPointF(200 , 200) 
     self.bpoint4 = QtCore.QPointF(150 , 200) 
     self.bproto = QtGui.QPolygonF([self.bpoint1 , self.bpoint2 , self.bpoint3 , self.bpoint4]) 
     self.block = QtGui.QGraphicsPolygonItem() 
     self.block.setPolygon(self.bproto) 
     self.block.setFlag(QtGui.QGraphicsItem.ItemIsMovable) 

내 블록은 이제 이동 될 때까지 내 코드이고, 나는 새로운 정점마다 얻을 필요가 내 블록은? self.block.boundingRect() 시도했지만 동일한 RectF 준다. 어떤 사람이 나를 도울 수 있습니까?

답변

2

QPolygon은 단지 QVector에서 파생되므로 일반 배열 접근자는 사용하십시오. 하지만 그들은 로컬 좌표에있을 것이므로, 장면 좌표에 맵핑해야합니다 (나는 '새로운 정점'을 의미한다고 가정합니다) - block.mapToScene(block.polygon()[i])을 사용하십시오.

+0

정확히 여기 블록입니까? 왜냐하면 나는 속성 오류를 얻고 있기 때문이다. Im이 404 오류를 받기 때문에 문서를 볼 수도 없습니다. – Manoj

+0

블록은 정확히 여기 무엇입니까? 왜냐하면 나는 속성 오류를 얻고 있기 때문이다. Im이 404 오류를 받기 때문에 문서를 볼 수도 없습니다. self.block을 가정하면 wher 블록이 QGraphicsPolygonItem이고 range (3) : self.block.mapToScene (self.block.polygon() [i])에서 i를 수행하면 여전히 self.block을 인쇄합니다. boundingRect(), 그것은 여전히 ​​저에게 일정한 값을줍니다. @ cmannett85 – Manoj

+0

예, 저는'self.block'을 의미했습니다. 나는 당신이 혼란스러워하고 있다고 생각합니다. 'boundingRect()는 _local_ 좌표에서 경계 사각형을 반환합니다. 'self.block.mapToScene (self.block.polygon() [i])'_returns_ 아이템의 역변환 행렬에 의해 변환 된 폴리곤의 i 번째 점을 반환하여 좌표를 장면 좌표로 푸시합니다. – cmannett85