У меня есть QGraphicsTextItem, связанный с QGraphicsItem. Я хочу, чтобы QGraphicsTextItem всегда располагался непосредственно над QGraphicsItem, но я также хочу, чтобы текст оставался того же размера, когда коэффициент масштабирования становится меньше 1, т. элемент масштабируется меньше. Я обнаружил, что установка флага QGraphicsItem::ItemIgnoresTransformations
в значение true, когда коэффициент масштабирования ниже 1, помогает сохранить размер.
Но я не могу найти способ, чтобы текст всегда оставался над QGraphicsItem. Есть ли способ сделать это? Я попытался использовать функцию deviceTransform ()
, но текст по-прежнему смещался с QGraphicsItem при прокрутке. Хуже всего то, что некоторые элементы текста начали «трястись», т. е. они начали постоянно менять свое положение, чуть-чуть, так что казалось, что они трясутся. Если это та функция, которую мне нужно использовать, я думаю, я не знаю, как ее правильно использовать.
В конструкторе моего QGraphicsItem я добавил QGraphicsTextItem:
fTextItem = new QGraphicsTextItem(getName(), this);
fTextItem->setFlag(QGraphicsItem::ItemIgnoresTransformations);
Вот фрагмент кода из функции рисования QGraphicsItem
qreal lod = painter->worldTransform().m22();
if(lod <= 1.0) {
fTextItem-setFlag(QGraphicsItem::ItemIgnoresTransformations);
fTextItem->setPos(fTextItem->deviceTransform(view-viewportTransform()).inverted().map(view->mapFromScene(mapToScene(0,0))));
} else {
fTextItem->setFlag(QGraphicsItem::ItemIgnoresTransformations, false);
fTextItem->setPos(0, 0);
}