文本围绕一个圆形的周边显示
最近需要做个文本围绕一个圆形的周边显示,文本也要旋转显示的。类似八卦图一样
如图
实现的效果如下
具体代码如下
void mtttt::paintEvent( QPaintEvent * )
{
QPainter painter(this);
painter.translate(width()/2,height()/2);
QRectF rectangle(10.0, 10.0, 80.0, 80.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;
painter.setBrush(Qt::gray);
painter.drawEllipse(QPoint(0,0),200,200);
painter.save();
int scunm = 15; //控制显示个数
int anglestep = 20;
int anglestart = anglestep* (scunm-1)/2;
painter.setBrush(Qt::darkCyan);
QList<QColor> m_listcolor;
m_listcolor << Qt::red << Qt::darkGreen <<Qt::blue;
for (int i = 0; i < scunm; ++i)
{
QRect bottom(-25,200-50,50,50);
painter.save();
painter.rotate(-anglestep*(scunm-i-1));
painter.drawPie(QRect(-200,-200,400,400),(-90-anglestart-anglestep/2)*16,(anglestep-1)*16);
painter.restore();
}
for (int i = 0; i < scunm; ++i)
{
QRect bottom(-25,200-50,50,50);
painter.save();
painter.rotate(anglestart-i*anglestep);
painter.drawText(bottom,Qt::AlignCenter,"Abb");
painter.restore();
}
painter.restore();
painter.save();
painter.setBrush(Qt::green);
painter.drawEllipse(QPoint(0,0),150,150);
painter.restore();
}