【问题标题】:Cannot understand how to rotate text using drawText for qpainter无法理解如何使用 qpainter 的 drawText 旋转文本
【发布时间】:2017-08-04 22:44:29
【问题描述】:

这是我的代码:

for (qint32 i = 0; i < leftF.size(); i++){
    QPointF p = leftF.at(i).screenpos;

    // Drawing the dot
    painter.setPen(QPen(Qt::blue));
    painter.drawEllipse(p,R,R);

    // Drawing a line
    painter.drawLine(p.x(),p.y(),p.x(),p.y()-lineH);

    // Drawing the text.
    painter.drawText(p.x(),p.y()-lineH,2*R,2*R,Qt::AlignCenter,QString::number(i));

    // Duration position.
    painter.rotate(-90);
    painter.drawText(p.x(),p.y()-lineH,4*R,2*R,Qt::AlignCenter,QString::number(leftF.at(i).dur));
    painter.rotate(90);

}

问题是我需要这一行的文字:

painter.drawText(p.x(),p.y()-lineH,4*R,2*R,Qt::AlignCenter,QString::number(leftF.at(i).dur));

以 90 度角打印。但是看看这个解决方案:

How to rotate text for drawText?

我做的是我应该做的,但是它不起作用,因为文本根本没有出现在屏幕上。

如何在我想要的位置绘制旋转的文本? (在本例中为 p.x(),p.y()-lineH)

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    我找到了。以防其他人推翻这个问题。关键是在旋转之前平移坐标中心。所以就我而言:

    painter.save();
    painter.translate(p.x()-10,p.y()+2*lineH);
    painter.rotate(-90);
    painter.drawText(0,0,4*R,2*R,Qt::AlignCenter,QString::number(rightF.at(i).dur));
    painter.restore();
    

    这就像一个魅力!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-02
      • 2012-12-19
      相关资源
      最近更新 更多