这是我的代码:
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)
答案 0 :(得分: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();
这就像一个魅力!!