QGraphicsView에 팬/스케일 작업을 할 것입니다.
QGraphicsView의 설명서를 읽고 ensureVisible() 및 centerOn()과 같은 유틸리티 기능을 참조하십시오.
설명서가 말하는 내용을 이해하지만 실제로 작동하는 예제를 작성할 수는 없습니다.
문제를 이해하기 위해 예제 코드를 작성/제안 해주십시오.QGraphicsView ensureVisible() 및 centerOn()
2
A
답변
3
톤 일정량 뷰를 이동 (의 예를 들어보기의 mouseMoveEvent()
), MyView
가정 할 QGraphicsView
의 서브 클래스 (나는 그것을 테스트하지 않았고, 다음의 모든 코드를 파이썬에서 이식 된)입니다 :
void MyView::moveBy(QPoint &delta)
{
QScrollBar *horiz_scroll = horizontalScrollBar();
QScrollBar *vert_scroll = verticalScrollBar();
horiz_scroll->setValue(horiz_scroll.value() - delta.x());
vert_scroll->setValue(vert_scroll.value() - delta.y());
}
좌표 줌과 패닝에 의해 현장에서 지정된 사각형에 맞게 :
void MyView::fit(QRectF &rect)
{
setSceneRect(rect);
fitInView(rect, Qt::KeepAspectRatio);
}
장면합니다 (QGraphicsItem::ItemIgnoresTransformations
플래그가 설정)이 아닌 변형 가능한 항목이 포함되어있는 경우, 당신은 이메일을 우선 처리하십시오 이 경우 귀하의 객체의 경계 RECT는 피팅 할 때 가끔 MyView::fit()
(예를 들어 정확하게 물체를 맞지 않는 것을 의미 뷰의 줌 레벨에 의존하게에서
/**
* Compute the bounding box of an item in scene space, handling non
* transformable items.
*/
QRectF sceneBbox(QGraphicsItem *item, QGraphicsItemView *view=NULL)
{
QRectF bbox = item->boundingRect();
QTransform vp_trans, item_to_vp_trans;
if (!(item->flags() & QGraphicsItem::ItemIgnoresTransformations)) {
// Normal item, simply map its bounding box to scene space
bbox = item->mapRectToScene(bbox);
} else {
// Item with the ItemIgnoresTransformations flag, need to compute its
// bounding box with deviceTransform()
if (view) {
vp_trans = view->viewportTransform();
} else {
vp_trans = QTransform();
}
item_to_vp_trans = item->deviceTransform(vp_trans);
// Map bbox to viewport space
bbox = item_to_vp_trans.mapRect(bbox);
// Map bbox back to scene space
bbox = vp_trans.inverted().mapRect(bbox);
}
return bbox;
}
: 엑스트라 단계는 올바른 경계 상자를 계산하기 크게 축소 된보기에서 개체 선택). 더 빠르고 더러운 해결책은 경계 사각형이 자연적으로 "안정화"될 때까지 반복적으로 MyView::fit()
으로 전화하는 것입니다.
관련 문제
- 1. QGraphicsView 및 eventFilter
- 2. QGraphicsView 및 사용자 지정 커서
- 3. 자동 상품이있는 QGraphicsView
- 4. QMainWindow + QGraphicsView 및 둘 이상의 QGLWidget 문제
- 5. QGraphicsView 스크롤 및 이미지 크기 조정/자르기
- 6. QGLWidget + QGraphicsScene + QGraphicsView 문제
- 7. 위젯의 가운데 QGraphicsView
- 8. QGraphicsView/QGraphicsScene 렌더링 질문
- 9. qt4에 대한 도움말 qgraphicsview
- 10. QGraphicsView 상단의 투명한 QGLWidget
- 11. 를 QGraphicsView noobie 질문
- 12. 하나의 QGraphicsScene이있는 다중 QGraphicsView
- 13. QGraphicsView 스크롤 문제
- 14. 프로그래밍 방식으로 QGraphicsView 스크롤
- 15. QGraphicsView/Scene - 멀티 스레드 악몽
- 16. QGraphicsView 프레임 워크 및 성능에서 포인터 캐스트가 많습니다.
- 17. QMainWindow에서보다 효율적인 중앙 위젯 : QGLWidget VS QGraphicsView
- 18. QGraphicsView/QGraphicsScene에서 스케일링에 대한 일반적인 조언
- 19. Qt-> QGraphicsView-> QGraphicsItem resizing
- 20. PyQt의 테두리를 완전히 제거 할 수 없습니다 QGraphicsView
- 21. 많은 항목이있는 2D 정적 장면에서 QGraphicsView 성능을 향상시키는 방법은 무엇입니까? (해결할 방법이 없습니까?)
- 22. QGraphicsItem 및 탭 순서
- 23. Meego 1.2 Harmattan 및 QCamera 응용 프로그램
- 24. Qt QGraphicsView는 스케일 원점으로 topleft를 사용합니다.
- 25. QGraphicsWebView를 사용하여 HTML 렌더링 및 원시 비트 액세스
- 26. QGraphicsScene 및 QGraphicsView로 타일링
- 27. Qt4 QGraphicsScene mac ppc 10.4 렌더링 버그, rects 나중에 줄을 숨기시겠습니까?
- 28. Qt의 두 QGraphicScene 인스턴스에서 동일한 모델 공유
- 29. 이미지를 마우스로 클릭하면 Pyqt가 픽셀 위치 및 값을 가져옵니다.
- 30. "및"및 꼬리 재귀
마우스로 팬 및 크기 조절을 하시겠습니까? 또는보기에 개체 집합을 맞 춥니 다? –
나는 거기에 맞는 작업이있을 것 같아요 또한 마우스로 팬/스케일 작업을 어쩌면. – onurozcelik