资源简介
在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
相关资源
- IEEE754浮点数与整数互转源代码
- Huffman编码 Verilog代码
- 易语言zlib支持库静态版解压代码
- 雷达中的微多普勒效应 程序代码
- VS2010下利用CChartCtrl实现多条曲线绘制
- 经典的光线追踪算法实现的源代码
- linux C 多线程编程典型
- 电脑鼠走迷宫竞赛代码
- SpringBootVue全栈开发实战+整本代码.t
- 霍尼韦尔Honeywell1400G扫码器中文使用说
- 双振镜二维扫描系统的误差
- 雷凌rt2870 802.11n USB Wireless LAN Card驱动
- ADAS1000初始化代码,亲测好用
- RFID技术的应用与现代物流
- 电脑鼠最终代码可运行
- 8255的PC口用于4*4键盘的扫描
- WebRobot网站扫描工具
- 风电功率预测matpower代码
- 冒险岛代码提取软件
- windows平台抓屏源代码
- 全国省市区县点位经纬度数据包含区
- 敏捷项目进度跟踪工具+迭代燃尽图
- cpu设计完全教程实现
- AHB总线下的slave ram的verilog代码.rar
- 《计算机原理与设计:Verilog HDL版》
- 东北大学软件学院新一代互联网技术
- 基于ICL8038函数信号发生器的设计
- mdwiki 项目模板代码
- bmp图像读取源代码
- TMS320C54x_fir滤波器的实现_dsp_包含源代
评论
共有 条评论