2010-05-10 2 views
3

저는 QGraphicsGridLayout에 QGraphicsWidget의 인스턴스를 배치하고 QGraphicsPath로 그려진 선과 위젯을 연결하고자하는 매우 간단한 PyQt 애플리케이션이 있습니다. 불행히도, 내가 무엇을 시도하든 항상 시작 위젯과 끝 위젯 모두에 대해 (0, 0)을 다시 가져온다.PyQt : QGraphicsGridLayout에서 QGraphicsWidgets의 위치를 ​​얻으십시오.

위젯을 장면과 레이아웃에 추가하는 재귀 함수로 그래프를 구성하고 있습니다. 재귀 함수가 완료되면 레이아웃이 모든 위젯을 표시하는 장면에 추가되는 새로운 위젯에 추가됩니다. 위젯이 생성되면 가장자리가 장면에 추가됩니다.

그리드 레이아웃에서 위젯 중 0이 아닌 위치를 얻으려면 어떻게해야합니까?

업데이트 : 그리드 레이아웃의 위젯에서 pos()와 scenePos()를 모두 시도했음을 잊어 버렸습니다. 둘 다 항상 격자의 모든 위젯의 위치로 (0, 0)을 반환합니다.

답변

1

QGraphicsItem::pos()을 사용하면 부모 좌표에 항목의 위치가 표시됩니다. QGraphicsLayout을 사용하는 경우, 부모는 아마도 객체를 포함하는 셀일 것이므로 좌표는 0입니다. 당신이 경로 위젯을 연결하려는 때문에

, 당신은 제어점을 정의하는 장면을 조정해야합니다 현장에 QGraphicsWidget의 위치를 ​​얻기 위해 QGraphicsItem::scenePos()를 사용합니다.

+0

아 - 죄송합니다. 위의 내용을 잊어 버렸습니다. 나는 pos()와 scenePos()를 시도했다. 둘 다 격자 레이아웃에 배치 한 모든 위젯에 대해 (0, 0) 점을 반환합니다. –

+0

또한이 문제가 있습니다. 나는 scenePos()와 pos()를 시도했다. 나는 또한 mapToScene 함수를 시도했다. 항상 0,0 "pos = self.upstreamconnect.mapToScene (self.upstreamconnect.pos())" – jspada

관련 문제