资源简介
使用Qt绘制雷达表盘,并可以显示目标、余晖、同心圆、十字架等元素。
代码片段和文件信息
#include “SkyplotWidget.h“
#include
#include
#include
#include
#include
#include
SkyplotWidget::SkyplotWidget(QWidget *parent)
: QWidget(parent)
flash( false )
p_marginScale( 0.78 )
p_satScale( 0.03 )
p_fontScale( 0.02 )
p_gridColor( QColor( 150 150 150 255 ) )
p_gridTextColor( QColor( 210 210210))
p_gridWidth( 3 )
p_ellipses( 3 )
p_crosses( 3 )
p_textMargin( 10 )
p_flashIntervall( 500 )
p_withGridLabels( true )
p_antialiased( true )
m_pieRotate(0)
{
flashTimer.setInterval( p_flashIntervall );
connect( &flashTimer SIGNAL( timeout() ) this SLOT( change_flash() ) );
flashTimer.start( p_flashIntervall );
connect(&m_PieSpeedSIGNAL(timeout())thisSLOT(pie_speed()));
m_PieSpeed.start(50);
}
void SkyplotWidget::change_flash( void )
{
flash = !flash;
this->update();
}
void SkyplotWidget::pie_speed( void )
{
m_pieRotate -= 10;
this->update();
}
void SkyplotWidget::paintEvent(QPaintEvent *)
{
QSize widgetSize(this->size());
QPalette p = palette();
QPainter *painter = new QPainter(this);
float topMargin ;
float leftMargin;
float size;
float satelliteSize;
float fontSize;
float availableWidth = widgetSize.width ();
float availableHeight = widgetSize.height();
if( availableHeight > availableWidth )
{
size = widgetSize.width() * p_marginScale;
topMargin = ( widgetSize.width() - widgetSize.width() * p_marginScale + widgetSize.height() - widgetSize.width() ) / 2.0;
leftMargin = ( widgetSize.width() - widgetSize.width() * p_marginScale ) / 2.0;
}
else
{
size = widgetSize.height() * p_marginScale;
leftMargin = ( widgetSize.height() - widgetSize.height() * p_marginScale + widgetSize.width() - widgetSize.height()) / 2.0;
topMargin = ( widgetSize.height() - widgetSize.height() * p_marginScale ) / 2.0;
}
satelliteSize = size * p_satScale;
painter->setRenderHint(QPainter::Antialiasing p_antialiased);
painter->translate( leftMargin topMargin ); //重新设置坐标原点
fontSize = size * p_fontScale;
painter->setFont(QFont( “Arial“ static_cast< int >(fontSize)));
//圆圈
for(int i=0; i <= p_ellipses; i++)
{
float radius = size / 2.0 - i * ( size / ( 2.0 * p_ellipses ));
painter->setPen( QPen( p_gridColor p_gridWidth ) );
painter->drawEllipse(QPoint( size/2.0 size/2.0 ) static_cast< int >( radius ) static_cast< int >(radius));
if(p_withGridLabels)
{
painter->setPen( QPen( p_gridTextColor p_gridWidth -2.5 ) );
double tmp = ((p_ellipses - i) * (mMonitorScope / p_ellipses));
QString distance = QString::number(((p_ellipses - i) * (mMonitorScope / p_ellipses)) 10 2);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14453 2019-02-27 14:09 SkyplotWidget.cpp
文件 8037 2019-01-19 11:06 SkyplotWidget.h
- 上一篇:Qt天气预报程序
- 下一篇:Qt5主窗体:文本编辑器
相关资源
- Qt5主窗体:文本编辑器
- Qt天气预报程序
- QT5 UDP方式发送数据
- 激光雷达数据采集或读取、显示、直
- ISAR逆合成孔径雷达成像程序
- Swerling检测概率
- 基于qt的学生信息管理系统
- 雷达中的运动补偿
- 雷达测量精度和分辨力
- 情圣一号 序列号对应版本号及硬件
- 零基础学习QTP自动化测试视频教程.
- 易语言雷达浏览器源码
- 源码:Qt上位机(温度曲线图,txt文件
- QT 可使用的简易计算器
- qtListwidget控件使用
- QT实现的模拟win+r窗口
- QT计算器界面和计算器功能实现
- QT浮动窗口dock
- qt做一个贪吃蛇小游戏
- QT做一个简易浏览器
- Qt多客户端聊天程序.zip
- tableview连接数据库后导入导出类.zip
- qt界面连接wifi
- Smart4418友善之臂Tcp通信色谱仪
- qt4.8软键盘(通过点击输入框呼出)
- 适合新手学习Qt的一个小项目
- QTmedia播放音乐和视频的小
- QT中tcp协议通信源代码
- Qt串口助手,支持和单片机中文通信
- mgn-mqt82.zip
评论
共有 条评论