一款有意思的 Qt 飞行仪表控件
最近在网上偶然发现一款Qt飞行仪表板控件,真的很酷哦!
是一款开源软件,
直接编译运行:
美工还是不错的!
控件操作非常简单:
void MainWindow::timerEvent( QTimerEvent *event )
{
/////////////////////////////////
QMainWindow::timerEvent( event );
/////////////////////////////////
float timeStep = m_time.restart();
m_realTime = m_realTime + timeStep / 1000.0f;
float alpha = 0.0f;
float beta = 0.0f;
float roll = 0.0f;
float pitch = 0.0f;
float heading = 0.0f;
float slipSkid = 0.0f;
float turnRate = 0.0f;
float devH = 0.0f;
float devV = 0.0f;
float airspeed = 0.0f;
float altitude = 0.0f;
float pressure = 28.0f;
float climbRate = 0.0f;
float machNo = 0.0f;
float adf = 0.0f;
float dme = 0.0f;
if ( m_ui->pushButtonAuto->isChecked() )
{
alpha = 20.0f * sin( m_realTime / 10.0f );
beta = 15.0f * sin( m_realTime / 10.0f );
roll = 180.0f * sin( m_realTime / 10.0f );
pitch = 90.0f * sin( m_realTime / 20.0f );
heading = 360.0f * sin( m_realTime / 40.0f );
slipSkid = 1.0f * sin( m_realTime / 10.0f );
turnRate = 7.0f * sin( m_realTime / 10.0f );
devH = 1.0f * sin( m_realTime / 20.0f );
devV = 1.0f * sin( m_realTime / 20.0f );
airspeed = 125.0f * sin( m_realTime / 40.0f ) + 125.0f;
altitude = 9000.0f * sin( m_realTime / 40.0f ) + 9000.0f;
pressure = 2.0f * sin( m_realTime / 20.0f ) + 30.0f;
climbRate = 650.0f * sin( m_realTime / 20.0f );
machNo = airspeed / 650.0f;
adf = -360.0f * sin( m_realTime / 50.0f );
dme = 99.0f * sin( m_realTime / 100.0f );
m_ui->spinBoxAlpha ->setValue( alpha );
m_ui->spinBoxBeta ->setValue( beta );
m_ui->spinBoxRoll ->setValue( roll );
m_ui->spinBoxPitch ->setValue( pitch );
m_ui->spinBoxSlip ->setValue( slipSkid );
m_ui->spinBoxTurn ->setValue( turnRate );
m_ui->spinBoxDevH ->setValue( devH );
m_ui->spinBoxDevV ->setValue( devV );
m_ui->spinBoxHead ->setValue( heading );
m_ui->spinBoxSpeed ->setValue( airspeed );
m_ui->spinBoxMach ->setValue( machNo );
m_ui->spinBoxAlt ->setValue( altitude );
m_ui->spinBoxPress ->setValue( pressure );
m_ui->spinBoxClimb ->setValue( climbRate );
m_ui->spinBoxADF ->setValue( adf );
m_ui->spinBoxDME ->setValue( dme );
}
else
{
alpha = (float)m_ui->spinBoxAlpha ->value();
beta = (float)m_ui->spinBoxBeta ->value();
roll = (float)m_ui->spinBoxRoll ->value();
pitch = (float)m_ui->spinBoxPitch ->value();
heading = (float)m_ui->spinBoxHead ->value();
slipSkid = (float)m_ui->spinBoxSlip ->value();
turnRate = (float)m_ui->spinBoxTurn ->value();
devH = (float)m_ui->spinBoxDevH ->value();
devV = (float)m_ui->spinBoxDevV ->value();
airspeed = (float)m_ui->spinBoxSpeed ->value();
pressure = (float)m_ui->spinBoxPress ->value();
altitude = (float)m_ui->spinBoxAlt ->value();
climbRate = (float)m_ui->spinBoxClimb ->value();
machNo = (float)m_ui->spinBoxMach ->value();
adf = (float)m_ui->spinBoxADF ->value();
dme = (float)m_ui->spinBoxDME ->value();
}
m_ui->widgetPFD->setFlightPathMarker ( alpha, beta );
m_ui->widgetPFD->setRoll ( roll );
m_ui->widgetPFD->setPitch ( pitch );
m_ui->widgetPFD->setSlipSkid ( slipSkid );
m_ui->widgetPFD->setTurnRate ( turnRate / 6.0f );
m_ui->widgetPFD->setDevH ( devH );
m_ui->widgetPFD->setDevV ( devV );
m_ui->widgetPFD->setHeading ( heading );
m_ui->widgetPFD->setAirspeed ( airspeed );
m_ui->widgetPFD->setMachNo ( machNo );
m_ui->widgetPFD->setAltitude ( altitude );
m_ui->widgetPFD->setPressure ( pressure );
m_ui->widgetPFD->setClimbRate ( climbRate / 100.0f );
m_ui->widgetNAV->setHeading ( heading );
m_ui->widgetNAV->setHeadingBug ( 0.0f );
m_ui->widgetNAV->setCourse ( 0.0f );
m_ui->widgetNAV->setBearing ( adf , true );
m_ui->widgetNAV->setDeviation ( devH , true );
m_ui->widgetNAV->setDistance ( dme , true );
m_ui->widgetSix->setRoll ( roll );
m_ui->widgetSix->setPitch ( pitch );
m_ui->widgetSix->setAltitude ( altitude );
m_ui->widgetSix->setPressure ( pressure );
m_ui->widgetSix->setAirspeed ( airspeed );
m_ui->widgetSix->setHeading ( heading );
m_ui->widgetSix->setSlipSkid ( slipSkid * 15.0f );
m_ui->widgetSix->setTurnRate ( turnRate );
m_ui->widgetSix->setClimbRate ( climbRate );
m_ui->widgetPFD->update();
m_ui->widgetNAV->update();
m_ui->widgetSix->update();
m_steps++;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
类似的工业仪表控件网上还有很多。真心感觉Qt拯救了C++!
http://blog.csdn.net/goldenhawking/article/details/78817426
一款有意思的 Qt 飞行仪表控件的更多相关文章
- 交互式的Flash图表和仪表控件AnyChart
AnyChart使你可以创建出绚丽的交互式的Flash图表和仪表控件.是一款灵活的基于Adobe Flash和跨浏览器和跨平台的图表解决方案,被很多知名大公司所使用,可以用于仪表盘的创建.报表.数据分 ...
- SYRefresh 一款简洁易用的刷新控件 支持tableview,collectionview水平垂直刷新功能
SYRefresh 地址: https://github.com/shushaoyong/SYRefresh 一款简洁易用的刷新控件 示例程序: 默认刷新控件使用方法: //添加头部刷新控件 Sc ...
- CAD控件:QT开发使用控件入门
1. 环境搭建: 3 1.1. 安装Qt 3 1.2. 安装Microsoft Windows SDK的调试包 6 2. QT中使用MxDraw控件 7 1.3. 引入控件 7 3. 打开DWG文件 ...
- Qt实现表格控件-支持多级列表头、多级行表头、单元格合并、字体设置等
目录 一.概述 二.效果展示 三.定制表头 1.重写数据源 2.重写QHeaderView 四.设置属性 五.相关文章 原文链接:Qt实现表格控件-支持多级列表头.多级行表头.单元格合并.字体设置等 ...
- paper 139:qt超强绘图控件qwt - 安装及配置
qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式 ...
- Qt列表等控件实现平滑滚动&deepin启动器存在的问题
Qt列表等控件实现平滑滚动 Qt自带的的列表控件是不能平滑滚动的,但如果滚动速度快的话很容易引起视线丢失,体验效果很差.本篇主要讲述如何在Qt中对列表控件加入平滑滚动.文中以QScrollArea控件 ...
- Qt之表格控件蚂蚁线
一.蚂蚁线 摘自互动百科:在图像影像软件中表示选区的动态虚线,因为虚线闪烁的样子像是一群蚂蚁在跑,所以俗称蚂蚁线.在Poshop,After Effect等软件中比较常见. 背景:用过excel的同学 ...
- AnyChart图表仪表控件在Flex环境下使用
AnyChart控件是一款当前流行的数据可视化解决方案,使客户可以创建交互地.生动的图表.实时仪表和地图.同时支持Flash和HTML5显示,控件提供极好的视觉外观和配色方案能够使客户根据不同的需求设 ...
- 一款灵活好用的日历控件Kalendae
Kalendae是一款纯js不依赖任何js库的日历控件,可以轻松实现显示月份数量,当前选中多个日期,并可以按照周等你想要的格式去定制选中项. 下载地址:GitHub/Kalendae 第一步:Kale ...
随机推荐
- 关于python的二维数组
test =[ [1, 2, 3], [4, 5, 6], [7, 8, 9]] #这个就可以看做是二维数组了,直接创建print(test)print(test[:][1]) ...
- Perl——正则表达式(四) 查找替换s///
转自http://blog.csdn.net/blog_abel/article/details/40589227 侵删 一. 介绍 使用 s/regex/replacement/modifiers ...
- 异步FIFO设计
参考http://www.cnblogs.com/BitArt/archive/2013/04/10/3010073.html http://blog.sina.com.cn/s/blog_6d30f ...
- C++ tab键实现自动补全输入功能
一.简介 由于项目中写了个测试的控制台程序,是每次读取一行,即通过getline()来实现的,所以每次必须输入全路径名称,才能实现运行. 大家都觉得麻烦,就写了个tab键自动选择补全的. 目前基本可实 ...
- 【CS Round #48 (Div. 2 only)】Dominant Free Sets
[链接]h在这里写链接 [题意] 让你在n个点组成的集合里面选取不为空的集合s. 使得这里面的点没有出现某个点a和b,ax>=bx且ay>=by; 问你s的个数. [题解] 我们把这些点按 ...
- JavaScript系列--JavaScript数组高阶函数reduce()方法详解及奇淫技巧
一.前言 reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值. reduce() 可以作为一个高阶函数,用于函数的 compose. reduce()方 ...
- POJ 1932 XYZZY (ZOJ 1935)SPFA+floyd
http://poj.org/problem?id=1932 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1935 题目大 ...
- ZOJ 1136 Longest Ordered Subsequence DP
传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1136 题目大意:给定一串序列,求最长的升序列长度,如1, 7, 3, ...
- [TypeStyle] Reusable styles using TypeStyle mixins
TypeStyle’s style function allows you to give multiple objects as an argument. This provides a simpl ...
- [Http] Understand what an HTTP Request is
Let's look at several HTTP requests to learn the basic structure of these messages, and how the vari ...