2012-08-06 1 views
1

그래픽 장면과 뷰가 있고 그 다음에 단일 요소를 추가하고 있습니다. 그러나 x/y 좌표가 무엇이든 관계없이 항상 그래픽보기의 중앙에 나타납니다.첫 번째로 추가 된 항목이 Qt의 그래픽 장면 /보기의 중앙에 나타나는 이유는 무엇입니까?

왜 이런 일이 발생하며, 어떻게하면 왼쪽 상단 구석에 나타낼 수 있습니까? 당신은 아마를 QGraphicsView로 표시되는 장면 사각형을 정의 할

scene = new QGraphicsScene(this); 
ui->graphicsView->setScene(scene); 
QGraphicsEllipseItem *ellipseItem = scene->addEllipse(150, 150, 10, 10); 

답변

1

기본적으로 QGraphicsScene은 모든 항목 직사각형을 함께 추가하여 sceneRect을 계산합니다. 첫 번째 항목을 추가하면 자동으로 장면 rect로 사용됩니다. 그리고 기본적으로 QGraphicsView은 장면 rect에 비늘과 중심을 배치합니다. 당신이 어떤 항목을 추가하기 전에

당신이 마지막 또는 원하는 장면 RECT를 알고있는 경우는, 그것을 설정 :

scene->setSceneRect(0, 0, 800, 600); 
scene->addEllipse(150, 150, 10, 10); 
1

:

이 내 코드입니다. 기본 뷰는 단지 현재 타원 인 중심의 경계 사각형을 보여줍니다. QGraphicsView :: fitInView를 사용하여 명시 적으로 표시 할 영역을 정의 할 수 있습니다.

+0

감사합니다, 나는 그것을 시도를하지만 fitInView 내가 스케일링을 방지 할 수 있습니다, 또한 장면을 확장 할 것 같다? – sashoalm

+0

뷰 rect를 설정할 때 간단한 위젯의 너비와 높이를 사용하십시오. 또한 위젯의 레이아웃이 변경 되더라도보기를 유지하기 위해 재정의 할 수있는 보호 된 "크기 변경"방법이 있어야합니다. – pwuertz