核心代码:
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.translate(this->width()/2,this->height()/2);
painter.setRenderHint(QPainter::Antialiasing, true);
int r = this->width()/4 ;
int angle = 30;
painter.drawEllipse(-r,-r,2*r,2*r);
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::cyan);
painter.drawPie(-r,-r,2*r,2*r,0*16,30*16);
painter.setBrush(Qt::green);
painter.drawPie(-r*0.5,-r*0.5,2*r*0.5,2*r*0.5,0*16,30*16);
painter.setBrush(Qt::blue);
painter.drawPie(-r*0.3,-r*0.3,2*r*0.3,2*r*0.3,0*16,30*16);
painter.setBrush(Qt::red);
painter.drawPie(-r*0.2,-r*0.2,2*r*0.2,2*r*0.2,0*16,30*16);
}
思想1:使用drawPie从后往前画
思想2:使用drawArc,设置弧度的width即可
可以使用for循环画
int num = 4;
for(int i = num;i > 0;i--)
{
painter.setBrush(QColor(122,50+30*i,100+20*i));
painter.drawPie(-r*i/num,-r*i/num,2*r*i/num,2*r*i/num,0*16,30*16);
}