Я использую QGraphicsTextItem, чтобы нарисовать текст на сцене. Текст нарисован вдоль пути (QGraphicsPathItem), который является родительским элементом моего QGraphicsTextItem - поэтому изменение текста изменяется вдоль элемента пути и приклеивается к нему при масштабировании вида. Но размер шрифта QGraphicsTextItem также меняется при масштабировании вида - этого я и стараюсь избегать. Я установил QGraphicsItem :: ItemIgnoresTransformations flag to QGraphicsTextItem перестает вращаться, пока он является родителем (QGraphicsPathItem).Предотвращение масштаба шрифта в QGraphicsItem
Я понимаю, что я должен повторно реализовать QGraphicsTextItem :: краска функцию, но я застрял с системой координации. Вот код (Ярлык класс наследует общественный QGraphicsTextItem):
void Label::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
// Store current position and rotation
QPointF position = pos();
qreal angle = rotation();
// Store current transformation matrix
QTransform transform = painter->worldTransform();
// Reset painter transformation
painter->setTransform(QTransform());
// Rotate painter to the stored angle
painter->rotate(angle);
// Draw the text
painter->drawText(mapToScene(position), toPlainText());
// Restore transformation matrix
painter->setTransform(transform);
}
Положение (и вращение) моего текста на экране непредсказуема :( Что я делаю неправильно Спасибо очень много? заранее.
У меня есть аналогичная проблема с QGraphicsTextItem: игнорирование преобразований вызывает заметное смещение в позиции с другой шкалой взглядов. Я считаю, что центровка может решить эту проблему. – handle