雷达界面会有扫描效果,可以设置一个定时器,每隔一段时间就更新角度,然后再调用update即之前文章介绍过的手工控制界面绘制:
代码如下
void Widget::timerTimeout()
{
//更新角度
if(flag == 0)//flag为雷达之时是正转还是逆转
{
angle1++;
if(angle1 == 180)
flag = 1;
}
else
{
angle1--;
if(angle1 == 0)
flag = 0;
}
update();
}
绘制扫描的指针
pen.setWidth(15);
painter.setPen(pen);
painter.drawLine(0,0,700 * qCos(qDegreesToRadians(angle1)),-700 * qSin(qDegreesToRadians(angle1)));
渐变色的绘制:使用多画直线的方法来实现,使用30根直线,直线与直线的间隔为1°。根据直线是第几根来设置透明度的大小
for(int num = 1; num <= angle; num ++)
{
painter.setOpacity(1 - num * 1.0 / ((angle > 30)? 30 : angle));
painter.drawLine(0,0,700 * qCos(qDegreesToRadians(angle - num)),-700 * qSin(qDegreesToRadians(angle - num)));
if(num == 30)
break;
}
下载通道:https://download.csdn.net/download/misikamikirto/87881669?spm=1001.2014.3001.5503