Как бы я взял угол вершины, видимый через QGraphicsView, и сохранить его как верх при масштабировании?
Так что, если мне случится иметь символ 'A' в углу вершины при масштабировании, Aоставайся там пока весы.В настоящее время центр экрана принимает начало координат шкалы.Но я бы хотел, чтобы угол в вершине был источником для преобразования.
То есть, в вершине, как видно из графического представления, а не всей графической сцены.Как мне это сделать?
Это мой масштабный код для масштабирования сцены на 100% от ее ширины до области просмотра:
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));
}