文本围绕一个圆形的周边显示

最近需要做个文本围绕一个圆形的周边显示,文本也要旋转显示的。类似八卦图一样

如图文本围绕一个圆形的周边显示

实现的效果如下

文本围绕一个圆形的周边显示

具体代码如下

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();

}