Я сейчас использую QGraphicsView
а также QGraphicsScene
для показа некоторых графиков. В зависимости от значений этих графиков (они являются гистограммами) я меняю масштаб. Я также рисую некоторый текст (они получены из QGraphicsItem
) для показа их значений, как это
Но я не масштабирую тексты, такие как диаграммы, так что это приводит к проблеме. Если я не масштабирую тексты, я получаю реальные координаты прямоугольника. Я хочу получить масштаб оси Y для рисования текстов в правильных положениях.
Итак, мой вопрос, как я могу получить шкалу в QGraphicsItem
или в QGraphicsScene
,
Заранее спасибо.
Если вы реализуете свою собственную функцию для масштабирования, то нет прямого способа получить масштаб в QGraphicsItem
, Вы можете сделать статические переменные в QGraphicsView
(где вы считаете масштаб) для весов и статических функций для их получения.
Ну, есть решение для этого. В QGraphicsScene
вы можете получить матрицу преобразования, как это
QTransform matrix = views().at(0)->transform();
views()
на самом деле возвращает QList
из QGraphicsView
s. После получения матрицы для получения масштаба (например, вертикальной) вы можете сделать это
qreal verticalScale = matrix.m22();
Разница в получении масштаба в QGrapcsItem
просто
QTransform matrix = scene()->views().at(0)->transform();
А в остальном то же самое.