QGraphicsView를 통해 보았을 때 어떻게 꺾임 모서리를 가져 와서 크기를 조정할 때 어떻게 유지할 수 있습니까?Qt QGraphicsView는 스케일 원점으로 topleft를 사용합니다.
스케일링하는 동안 맨 앞의 구석에 'A'기호가 있으면 A가 아직 저울에 머무를 것입니다. 현재 화면의 중심은 스케일의 원점으로 간주됩니다. 그러나 나는 번영의 구석을 변화의 원점으로 삼고 싶습니다.
즉, 전체 그래픽 장면이 아닌 그래픽보기에서 보이는 것과 같습니다. 어떻게하면됩니까?
void GraphicsView::resizeEvent(QResizeEvent *event)
{
QGraphicsView::resizeEvent(event);
double scale_delta = (double) event->size().width()/scene()->width();
resetMatrix();
scale(scale_delta, scale_delta);
}
솔루션
void GraphicsView::resizeEvent(QResizeEvent *event)
{
QGraphicsView::resizeEvent(event);
if (!first_shown)
{
centerOn(0, 0);
first_shown = true;
}
QPointF topleft = mapToScene(viewport()->rect().topLeft());
resetMatrix();
QPointF shift = (mapToScene(viewport()->rect().bottomRight() + QPoint(1, 1)) - mapToScene(viewport()->rect().topLeft()));
shift /= (double) event->size().width()/scene()->width();
fitInView(QRectF(topleft, topleft + shift));
}
번역 그런 규모