资源简介
在Qt5中实现的雷达扫描效果,qt-5.5.1 下编译通过,下载此项目后,在qt5中的项目位置修改路径打开。仅提供一个模拟版本,后续使用可以自己开发。

代码片段和文件信息
#include “cradar.h“
#include
#include
#include
#include
#include
CRadar::CRadar(QWidget *parent) : QWidget(parent)
{
//初始化
m_pieRotate = 0;
m_timerId = -1;
m_nSpeed = 50;
m_points< m_pointsAlapha<<100<<100<<100<<100<<100;
//启动定时器
m_timerId = startTimer(m_nSpeed);
m_pointTimerId = startTimer(1200);
}
void CRadar::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
//抗锯齿
painter.setRenderHint(QPainter::Antialiasing);
//背景
painter.fillRect(rect()QColor(100100200));
//边长
int len = m_drawArea.width();
//底盘(x轴、y轴和3个圆)
painter.setPen(QPen(Qt::white));
painter.drawLine(m_drawArea.topLeft() + QPoint(0len/2)m_drawArea.topRight() + QPoint(0len/2));
painter.drawLine(m_drawArea.topLeft() + QPoint(len/20)m_drawArea.bottomLeft() + QPoint(len/20));
painter.drawEllipse(m_drawArea.center()len/2len/2);
painter.drawEllipse(m_drawArea.center()len/3len/3);
painter.drawEllipse(m_drawArea.center()len/6len/6);
//转动部分
//---//线
qreal x = m_drawArea.center().x() + (qreal)len/2 * cos(-m_pieRotate*3.14159/180);
qreal y = m_drawArea.center().y() + (qreal)len/2 * sin(-m_pieRotate*3.14159/180);
painter.setPen(QPen(Qt::white));
painter.drawLine(m_drawArea.center()QPointF(xy));
//----//扇形
QConicalGradient gradient;
gradient.setCenter(m_drawArea.center());
gradient.setAngle(m_pieRotate + 180); //渐变与旋转方向恰好相反,以扇形相反的边作为渐变角度。
gradient.setColorAt(0.4QColor(255255255100)); //从渐变角度开始0.5 - 0.75为扇形区域,由于Int类型计算不精确,将范围扩大到0.4-0.8
gradient.setColorAt(0.8QColor(2552552550));
painter.setBrush(QBrush(gradient));
painter.setPen(Qt::NoPen);
painter.drawPie(m_drawAream_pieRotate*1690*16);
//装饰-随机点
for(int i = 0; i < m_points.count(); ++i)
{
int colorAlaph = m_pointsAlapha.at(i);
painter.setPen(QPen(QColor(255255255colorAlaph)3));
painter.drawPoint(m_points.at(i));
}
//更详细解释参考:http://fearlazy.com/index.php/post/31.html
}
void CRadar::resizeEvent(QResizeEvent *event)
{
//以较短的边长作为绘制区域边长
if(width() > height())
{
m_drawArea = QRect((width() - height())/20height()height());
}
else
{
m_drawArea = QRect(0(height() - width())/2width()width());
}
m_drawArea.adjust(1010-10-10);
}
void CRadar::timerEvent(QTimerEvent *event)
{
if(m_timerId == event->timerId())
{
m_pieRotate -= 10;
update();
}
else if(m_pointTimerId == event->timerId())
{
//随机更换装饰的点
for(int i = 0; i < m_points.count(); ++i)
{
int offsetX = rand()%m_drawArea.width();
int offsetY = rand()%m_drawArea.width();
int alapha = rand()%255;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3401 2018-09-17 20:30 CRadar\cradar.cpp
文件 998 2018-09-17 20:21 CRadar\cradar.h
文件 401 2018-09-17 19:52 CRadar\CRadar.pro
文件 18700 2018-09-17 20:40 CRadar\CRadar.pro.user
文件 175 2018-09-17 19:50 CRadar\main.cpp
文件 250 2018-09-17 20:11 CRadar\widget.cpp
文件 273 2018-09-17 20:14 CRadar\widget.h
文件 441 2018-09-17 19:50 CRadar\widget.ui
目录 0 2018-09-17 20:40 CRadar
----------- --------- ---------- ----- ----
24639 9
- 上一篇:网盘地址.txt
- 下一篇:MC1496同步检波PCB
相关资源
- bp神经网络源代码,可直接运行
- 随机森林R语言代码
- 高等代数总结(84页)
- 计算机图形学 边填充算法实现代码
- 直流无刷电机方波驱动 stm32 例程代码
- 阵列处理中的线性代数
- 仿知乎界面小程序源代码
- 贪吃蛇源代码.fla
- 周立功开发板ProASIC3实验-syn_FIFO代码
- IMX385驱动代码.zip
- dotnet 写字板 实验 源代码 不好请要不
- 图像二维小波变换的实现源代码
- 八三编码器设计 VHDL代码 简单,包附
- linux应用层的华容道游戏源代码
- 交通咨询模拟系统完整代码
- http请求状态代码
- 数值分析所有实验代码
- 数值分析中的代数插值法
- 网上拍卖系统完整源代码
- 音乐代码转换软件 单片机编程时用
- CSMA/CD等动画演示加源代码
- silicon lab公司的收音IC SI47XX全套开发工
- 用51单片机实现G代码翻译
- 合同管理系统的源代码(附数据库)
- 用VC 编写的仿QQ聊天室程序源代码
- 迅雷专用链接地址解析器
- 端口扫描课程设计详细的报告
- web班级网站设计代码
- 38k单片机红外发送代码、keil
- STM32F103 串口程序(完整版)
评论
共有 条评论