2012-03-11 3 views
0

QGraphicsView/QGraphicsScene을 사용하여 이미지를 표시하고 있습니다. 이미지는 항상 끝 부분에 스크롤 막대가있는 원래 크기로 표시됩니다. QGraphicsView가 가로 세로 비율을 유지하는 창의 크기에 따라 이미지를 자동으로 맞추기를 원합니다. 나는이 시도했지만 아무 일도하지 :가로 세로 비율을 변경하지 않고 QGraphicsView/QGraphicsScene의 픽스맵을 보는 방법

ui->graphicsView->fitInView(0,0,ui->graphicsView->width(),ui->graphicsView->height(),Qt::KeepAspectRatio); 
+0

어디에서이 메서드를 호출합니까? (생성자에서 일부 지오메트리 데이터가 유효하지 않습니다.) Qt 문서는'resizeEvent'에서 그것을 사용할 것을 제안합니다. 상수로 호출하면 작동합니까? ('fitInView (0,0, 100, 100, Qt :: KeepAspectRatio);') – sgibb

+0

그래, 나는 그것을 생성자 (atleast 한 번 작동해야한다)라고 부른다. –

답변

11

당신은 장면의를 뷰의 사각형이 아닌를 제공하고 있습니다.

ui->graphicsView->fitInView(scene->itemsBoundingRect() ,Qt::KeepAspectRatio); 

itemsBoundingRect 계산을하고 현장에있는 모든 항목의 경계 RECT를 반환

이 작동합니다. 따라서 그래픽 뷰의 뷰 행렬은 장면의 내용에 맞게 조정됩니다.

나는 resizeEvent을 다시 구현하고이 호출을 사용하는 것이 좋습니다.

관련 문제