#include "radar.h" #include Radar::Radar(QWidget *parent) : QWidget(parent) { setAutoFillBackground(true); setPalette(QPalette(Qt::black)); lefttop = 50; interval = 200; scanAngle = 40; soundSpeed = 340; lastAngle = 0; lastDistant = 0; // test currentAngle = 0; isClock = false; baseDiameter = 800; setWindowTitle(tr("Radar")); resize(baseDiameter+2*lefttop, baseDiameter/2+2*lefttop); connect(&scanTimer,&QTimer::timeout, this, [this](){ // currentAngle++; // this->update(); }); scanTimer.start(1); } void Radar::paintEvent(QPaintEvent *) { // radar background QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen(Qt::darkGreen,1)); for(int i=0;i<5;++i){ painter.drawArc(lefttop+i*interval/2,lefttop+i*interval/2,baseDiameter-i*interval,baseDiameter-i*interval,0,180*16); painter.drawText(lefttop + baseDiameter - i* interval/2, lefttop+ baseDiameter/2, QString::number(MAX_DIS - i*double(interval)/baseDiameter*MAX_DIS)); } // scan area QConicalGradient conicalGradient(lefttop+baseDiameter/2, lefttop+baseDiameter/2, currentAngle); // conicalGradient.setStops(currentAngle+scanAngle); conicalGradient.setAngle(currentAngle-scanAngle-1); if(isClock){ conicalGradient.setAngle(currentAngle); conicalGradient.setColorAt(0, QColor(0,230,0,120)); conicalGradient.setColorAt(scanAngle/360.0, QColor(0,0,0,120)); painter.setPen(QPen(QColor(0,0,0,0),1)); painter.setBrush(QBrush(conicalGradient)); painter.drawPie(lefttop,lefttop,baseDiameter,baseDiameter,(currentAngle)*16,scanAngle*16); } else{ conicalGradient.setColorAt(0, QColor(0,0,0,120)); conicalGradient.setColorAt(scanAngle/360.0, QColor(0,230,0,120)); painter.setPen(QPen(QColor(0,0,0,0),1)); painter.setBrush(QBrush(conicalGradient)); painter.drawPie(lefttop,lefttop,baseDiameter,baseDiameter,(currentAngle-scanAngle)*16,scanAngle*16); } // painter.drawRect(250,250,20,20); // draw target painter.setPen(QPen(Qt::green)); painter.setBrush(QBrush(Qt::green)); for(int i = 0; i < 256; i++) { double angle = i; double dis = distances[i]; // qDebug()<