2011-05-07 2 views
3

인사말,Qt 장면의 중심에있는 항목을 추가 /보기

QGraphicsItem을 현재 화면 중앙에 정확하게 추가하려고합니다.
QGraphicsScene이 매우 커서 (10k X 10K) QGraphicsView에서 스크롤 막대를 완전히 표시 할 수 없습니다.

내 현재 화면의 사각형을 반환하는 함수를 찾을 수 없습니다. 모든 QGraphicsScene 및 QGraphicsView 함수에서 검색했습니다.
장면 rect를 반환하는 함수가 있습니다 (rect 10k X 10k를 반환하지만 쓸모가 없습니다). 마우스 위치를 반환하는 함수가 있지만 마우스를 움직여서 메뉴를 클릭하면 마우스가 더 이상 필요하지 않습니다. 장면 안에 있으면 항목이 보이는 공간 밖에서 생성됩니다 ...

대단히 고마워요.

답변

5

뷰포트의 왼쪽 상단 (0,0)을 장면에 매핑해야합니다. 너비 & 높이가 뷰포트의 너비 & 높이와 같습니다.

QRect exposedRect(graphicsView.mapToScene(0,0).toPoint(), graphicsView.viewport()->rect().size()); 

난 당신이 여기에서 그것을 처리 할 수있는 가정, : 현재 화면의 사각형이 시도 얻으려면.

+0

인사말 및 답변 해 주셔서 감사합니다. 불행히도 작동하지 않습니다. graphicsView.viewport(). pos() 및 graphicsView.viewport() -> rect(). center()를 시도했는데 장면에 항목을 배치해야하지만 그 위치에 넣지는 않습니다. 센터. 나는 setTransformationAnchor (QGraphicsView.AnchorUnderMouse) 및 setResizeAnchor (QGraphicsView.AnchorUnderMouse)를 사용하고 있습니다.하지만 AnchorViewCenter도 시도했는데 여전히 위치를 지정하지 않습니다. –

+2

@Cristi Constantin : graphicsView.mapToScene (graphicsView. viewport() -> rect(). center())를 사용하여 현재 화면의 중심점을 가져 오려면 작업을 수행해야합니다. – zkunov

+0

감사합니다. 그것이 해결책이었습니다. 잘못하고있었습니다. –

관련 문제