我目前使用QPainter:drawText()在QGraphicsItem :: paint()中绘制文本。它工作正常。但是我想绘制富文本,所以我将QPainter:drawText()更改为QPainter:drawStaticText()。但我现在发现无法正确定位文本,因为当我使用QTextOption :: WordWrap和Qt :: RichText时,QStaticText :: size()返回错误的值。
QStaticText st( text );
QTextOption options( align );
options.setWrapMode( QTextOption::WordWrap );
st.setTextOption( options );
st.setTextFormat( Qt::RichText );
st.setTextWidth( textRect.width() );
st.prepare( p->worldTransform(), p->font() );
QSizeF sz = st.size();
QPointF pos( textRect.topLeft() );
qreal hOffset = ( textRect.height() - sz.height() ) / 2.0;
pos += QPointF( 0.0, hOffset );
p->setClipRect( textRect );
p->drawStaticText( pos, st );
返回的高度值QStaticText :: size()与屏幕上显示的文本的高度不匹配。如果我删除自动换行或将其更改为纯文本,它可以正常工作。但我需要包装和富文字。
我做错了什么,还是个错误?
我在Windows 7上使用Qt 5.9.4。