text变形其实本质是painter被加上scale之后,text也随之改变,解决办法是把这个scale找出来,让他只作用于坐标而不作用于text本身。
void Line::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){ painter->setPen(myPen); painter->drawLine(myLine); if(mark_.isEmpty()==false){ painter->setPen(QPen(Qt::black)); double x1 = myLine.x1(); double y1 = myLine.y1(); double x2 = myLine.x2(); double y2 = myLine.y2(); QFont font = painter->font(); font.setPixelSize(16); painter->setFont(font); QFontMetrics fm(painter->font()); int textWidthInPixels = fm.width(mark_); int textHeightInPixels = fm.height(); QTransform trans = painter->worldTransform(); qDebug()<<trans; double scale = trans.m11(); painter->scale(1/scale, 1/scale); double x_t = textWidthInPixels- 10; double y_t = y2 + textHeightInPixels/2; painter->drawText(QPoint(x_t*scale,y_t*scale),mark_); } } |