我正在使用QGraphicsTextItem在场景中绘制文本。文本沿路径(QGraphicsPathItem )绘制,它是我的QGraphicsTextItem的父级- 因此文本旋转更改为沿路径元素并在缩放视图时粘贴在它上面。但是QGraphicsTextItem的字体大小在缩放视图时也会发生变化 - 这是我试图避免的。我将QGraphicsItem::ItemIgnoresTransformations标志设置为QGraphicsTextItem它在它的父级(QGraphicsPathItem)停止旋转时停止旋转。
我明白我必须重新实现QGraphicsTextItem::paint函数,但我被协调系统困住了。这是代码(Label类继承公共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 );
}
我的文本在屏幕上的位置(和旋转)是不可预测的:(我做错了什么?提前非常感谢。