我有一个 QGraphicsTextItem 的父级 QGraphicsItem。我希望 QGraphicsTextItem 始终位于 QGraphicsItem 的正上方,但我也希望文本在比例因子低于 1 时保持相同的大小,即即使父图形也保持比例因子为 1 的大小项目缩小。我发现QGraphicsItem::ItemIgnoresTransformations
当比例因子低于 1 时将标志设置为 true 可以保持大小。
但我似乎无法找到一种方法让文本的位置始终保持在 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);
}