#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QtMath>
#include <QTimer>
#include <QDebug>
int flag = 0;//角度正转反转标志位
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
resize(1600,900);
setStyleSheet("background-color:black");
QTimer *timer = new QTimer(this);
timer->start(50);
connect(timer,&QTimer::timeout,this,&Widget::timerTimeout);
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPen pen;
painter.setRenderHint(QPainter::Antialiasing);
pen.setColor(Qt::green);
painter.setPen(pen);
painter.drawArc(100,100,1400,1400,0*16,180*16);
painter.drawArc(240,240,1120,1120,0*16,180*16);
painter.drawArc(380,380,840,840,0*16,180*16);
painter.drawArc(520,520,560,560,0*16,180*16);
painter.drawArc(660,660,280,280,0*16,180*16);
painter.drawLine(0,800,1600,800);
painter.save();
painter.translate(800,800);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.restore();
QFont font("Buxton Sketch",30,QFont::Bold,true);
painter.setFont(font);
painter.setPen(Qt::white);
painter.save();
painter.translate(800,800);
painter.drawText(730,0,"0°");
painter.drawText(730 * qCos(qDegreesToRadians(30.0)),730 * qSin(qDegreesToRadians(-30.0)),"30°");
//注意这里的-30°
painter.drawText(730 * qCos(qDegreesToRadians(60.0)),730 * qSin(qDegreesToRadians(-60.0)),"60°");
painter.drawText(730 * qCos(qDegreesToRadians(90.0)),730 * qSin(qDegreesToRadians(-90.0)),"90°");
painter.drawText(730 * qCos(qDegreesToRadians(90.0)),730 * qSin(qDegreesToRadians(-90.0)),"90°");
painter.drawText(730 * qCos(qDegreesToRadians(120.0)),730 * qSin(qDegreesToRadians(-120.0)),"120°");
painter.drawText(730 * qCos(qDegreesToRadians(150.0)),730 * qSin(qDegreesToRadians(-150.0)),"150°");
painter.drawText(730 * qCos(qDegreesToRadians(180.0)),730 * qSin(qDegreesToRadians(-180.0)),"180°");
painter.setFont(QFont("Buxton Sketch",10,QFont::Bold,true));
painter.drawText(140,5,"10cm");
painter.drawText(280,5,"20cm");
painter.drawText(420,5,"30cm");
painter.drawText(560,5,"40cm");
painter.drawText(700,5,"50cm");
pen.setWidth(15);
painter.setPen(pen);
painter.drawLine(0,0,700 * qCos(qDegreesToRadians(angle1)),-700 * qSin(qDegreesToRadians(angle1)));
double angle = angle1;
if(flag == 0)
{
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;
}
}
else if(flag == 1)
{
for(int num = 1; num <= angle; num ++)
{
painter.setOpacity(1 - num * 1.0 / ((180 -angle > 30)? 30 : (180 - angle)));
painter.drawLine(0,0,700 * qCos(qDegreesToRadians(angle - num)),-700 * qSin(qDegreesToRadians(angle - num)));
if(num == 30)
break;
}
}
}
void Widget::timerTimeout()
{
//更新角度
if(flag == 0)
{
angle1++;
if(angle1 == 180)
flag = 1;
}
else
{
angle1--;
if(angle1 == 0)
flag = 0;
}
update();
}
QT小项目-雷达界面(三)绘制扫描效果
需积分: 5 85 浏览量
2023-06-08
16:29:38
上传
评论
收藏 944KB ZIP 举报
黑川赤音
- 粉丝: 23
- 资源: 5
最新资源
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
- 基于Java的微服务插件集合设计源码 - wsy-plugins
- 基于Vue和微信小程序的监理日志系统设计源码 - supervisionLog
- 基于Java和LCN分布式事务框架的设计源码 - tx-lcn
- 基于Java和JavaScript的茶叶评级管理系统设计源码 - tea
- IMG_5680.JPG
- IMG_0437.jpg
- 基于Java的JAVA项目分析工具设计源码 - JAVAProjectAnalysis
- top888.json
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈