最近在网上偶然发现一款Qt飞行仪表板控件,真的很酷哦! 
是一款开源软件, 
直接编译运行: 
 
美工还是不错的! 
控件操作非常简单:

  1. void MainWindow::timerEvent( QTimerEvent *event )
  2. {
  3. /////////////////////////////////
  4. QMainWindow::timerEvent( event );
  5. /////////////////////////////////
  6. float timeStep = m_time.restart();
  7. m_realTime = m_realTime + timeStep / 1000.0f;
  8. float alpha = 0.0f;
  9. float beta = 0.0f;
  10. float roll = 0.0f;
  11. float pitch = 0.0f;
  12. float heading = 0.0f;
  13. float slipSkid = 0.0f;
  14. float turnRate = 0.0f;
  15. float devH = 0.0f;
  16. float devV = 0.0f;
  17. float airspeed = 0.0f;
  18. float altitude = 0.0f;
  19. float pressure = 28.0f;
  20. float climbRate = 0.0f;
  21. float machNo = 0.0f;
  22. float adf = 0.0f;
  23. float dme = 0.0f;
  24. if ( m_ui->pushButtonAuto->isChecked() )
  25. {
  26. alpha = 20.0f * sin( m_realTime / 10.0f );
  27. beta = 15.0f * sin( m_realTime / 10.0f );
  28. roll = 180.0f * sin( m_realTime / 10.0f );
  29. pitch = 90.0f * sin( m_realTime / 20.0f );
  30. heading = 360.0f * sin( m_realTime / 40.0f );
  31. slipSkid = 1.0f * sin( m_realTime / 10.0f );
  32. turnRate = 7.0f * sin( m_realTime / 10.0f );
  33. devH = 1.0f * sin( m_realTime / 20.0f );
  34. devV = 1.0f * sin( m_realTime / 20.0f );
  35. airspeed = 125.0f * sin( m_realTime / 40.0f ) + 125.0f;
  36. altitude = 9000.0f * sin( m_realTime / 40.0f ) + 9000.0f;
  37. pressure = 2.0f * sin( m_realTime / 20.0f ) + 30.0f;
  38. climbRate = 650.0f * sin( m_realTime / 20.0f );
  39. machNo = airspeed / 650.0f;
  40. adf = -360.0f * sin( m_realTime / 50.0f );
  41. dme = 99.0f * sin( m_realTime / 100.0f );
  42. m_ui->spinBoxAlpha ->setValue( alpha );
  43. m_ui->spinBoxBeta ->setValue( beta );
  44. m_ui->spinBoxRoll ->setValue( roll );
  45. m_ui->spinBoxPitch ->setValue( pitch );
  46. m_ui->spinBoxSlip ->setValue( slipSkid );
  47. m_ui->spinBoxTurn ->setValue( turnRate );
  48. m_ui->spinBoxDevH ->setValue( devH );
  49. m_ui->spinBoxDevV ->setValue( devV );
  50. m_ui->spinBoxHead ->setValue( heading );
  51. m_ui->spinBoxSpeed ->setValue( airspeed );
  52. m_ui->spinBoxMach ->setValue( machNo );
  53. m_ui->spinBoxAlt ->setValue( altitude );
  54. m_ui->spinBoxPress ->setValue( pressure );
  55. m_ui->spinBoxClimb ->setValue( climbRate );
  56. m_ui->spinBoxADF ->setValue( adf );
  57. m_ui->spinBoxDME ->setValue( dme );
  58. }
  59. else
  60. {
  61. alpha = (float)m_ui->spinBoxAlpha ->value();
  62. beta = (float)m_ui->spinBoxBeta ->value();
  63. roll = (float)m_ui->spinBoxRoll ->value();
  64. pitch = (float)m_ui->spinBoxPitch ->value();
  65. heading = (float)m_ui->spinBoxHead ->value();
  66. slipSkid = (float)m_ui->spinBoxSlip ->value();
  67. turnRate = (float)m_ui->spinBoxTurn ->value();
  68. devH = (float)m_ui->spinBoxDevH ->value();
  69. devV = (float)m_ui->spinBoxDevV ->value();
  70. airspeed = (float)m_ui->spinBoxSpeed ->value();
  71. pressure = (float)m_ui->spinBoxPress ->value();
  72. altitude = (float)m_ui->spinBoxAlt ->value();
  73. climbRate = (float)m_ui->spinBoxClimb ->value();
  74. machNo = (float)m_ui->spinBoxMach ->value();
  75. adf = (float)m_ui->spinBoxADF ->value();
  76. dme = (float)m_ui->spinBoxDME ->value();
  77. }
  78. m_ui->widgetPFD->setFlightPathMarker ( alpha, beta );
  79. m_ui->widgetPFD->setRoll ( roll );
  80. m_ui->widgetPFD->setPitch ( pitch );
  81. m_ui->widgetPFD->setSlipSkid ( slipSkid );
  82. m_ui->widgetPFD->setTurnRate ( turnRate / 6.0f );
  83. m_ui->widgetPFD->setDevH ( devH );
  84. m_ui->widgetPFD->setDevV ( devV );
  85. m_ui->widgetPFD->setHeading ( heading );
  86. m_ui->widgetPFD->setAirspeed ( airspeed );
  87. m_ui->widgetPFD->setMachNo ( machNo );
  88. m_ui->widgetPFD->setAltitude ( altitude );
  89. m_ui->widgetPFD->setPressure ( pressure );
  90. m_ui->widgetPFD->setClimbRate ( climbRate / 100.0f );
  91. m_ui->widgetNAV->setHeading ( heading );
  92. m_ui->widgetNAV->setHeadingBug ( 0.0f );
  93. m_ui->widgetNAV->setCourse ( 0.0f );
  94. m_ui->widgetNAV->setBearing ( adf , true );
  95. m_ui->widgetNAV->setDeviation ( devH , true );
  96. m_ui->widgetNAV->setDistance ( dme , true );
  97. m_ui->widgetSix->setRoll ( roll );
  98. m_ui->widgetSix->setPitch ( pitch );
  99. m_ui->widgetSix->setAltitude ( altitude );
  100. m_ui->widgetSix->setPressure ( pressure );
  101. m_ui->widgetSix->setAirspeed ( airspeed );
  102. m_ui->widgetSix->setHeading ( heading );
  103. m_ui->widgetSix->setSlipSkid ( slipSkid * 15.0f );
  104. m_ui->widgetSix->setTurnRate ( turnRate );
  105. m_ui->widgetSix->setClimbRate ( climbRate );
  106. m_ui->widgetPFD->update();
  107. m_ui->widgetNAV->update();
  108. m_ui->widgetSix->update();
  109. m_steps++;
  110. }
  • 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 飞行仪表控件的更多相关文章

  1. 交互式的Flash图表和仪表控件AnyChart

    AnyChart使你可以创建出绚丽的交互式的Flash图表和仪表控件.是一款灵活的基于Adobe Flash和跨浏览器和跨平台的图表解决方案,被很多知名大公司所使用,可以用于仪表盘的创建.报表.数据分 ...

  2. SYRefresh 一款简洁易用的刷新控件 支持tableview,collectionview水平垂直刷新功能

    SYRefresh 地址: https://github.com/shushaoyong/SYRefresh 一款简洁易用的刷新控件 示例程序:   默认刷新控件使用方法: //添加头部刷新控件 Sc ...

  3. CAD控件:QT开发使用控件入门

    1. 环境搭建: 3 1.1. 安装Qt 3 1.2. 安装Microsoft Windows SDK的调试包 6 2. QT中使用MxDraw控件 7 1.3. 引入控件 7 3. 打开DWG文件 ...

  4. Qt实现表格控件-支持多级列表头、多级行表头、单元格合并、字体设置等

    目录 一.概述 二.效果展示 三.定制表头 1.重写数据源 2.重写QHeaderView 四.设置属性 五.相关文章 原文链接:Qt实现表格控件-支持多级列表头.多级行表头.单元格合并.字体设置等 ...

  5. paper 139:qt超强绘图控件qwt - 安装及配置

    qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式 ...

  6. Qt列表等控件实现平滑滚动&deepin启动器存在的问题

    Qt列表等控件实现平滑滚动 Qt自带的的列表控件是不能平滑滚动的,但如果滚动速度快的话很容易引起视线丢失,体验效果很差.本篇主要讲述如何在Qt中对列表控件加入平滑滚动.文中以QScrollArea控件 ...

  7. Qt之表格控件蚂蚁线

    一.蚂蚁线 摘自互动百科:在图像影像软件中表示选区的动态虚线,因为虚线闪烁的样子像是一群蚂蚁在跑,所以俗称蚂蚁线.在Poshop,After Effect等软件中比较常见. 背景:用过excel的同学 ...

  8. AnyChart图表仪表控件在Flex环境下使用

    AnyChart控件是一款当前流行的数据可视化解决方案,使客户可以创建交互地.生动的图表.实时仪表和地图.同时支持Flash和HTML5显示,控件提供极好的视觉外观和配色方案能够使客户根据不同的需求设 ...

  9. 一款灵活好用的日历控件Kalendae

    Kalendae是一款纯js不依赖任何js库的日历控件,可以轻松实现显示月份数量,当前选中多个日期,并可以按照周等你想要的格式去定制选中项. 下载地址:GitHub/Kalendae 第一步:Kale ...

随机推荐

  1. win8.1 “服务器运行失败”的解决方法

    平台:win8.1 SP1 问题:安装QQ安全管家又卸载后出现了奇怪的问题,1.在桌面点右键→个性化时,提示“服务器运行失败”.2.右键点击“这台电脑”,选择“属性”时没有反应.3.开始屏幕里随便选择 ...

  2. python3中sum

    摘自https://blog.csdn.net/ikerpeng/article/details/17026011 其实python中sum有两种 一种是python自己的sum 另一种是python ...

  3. 3、U-boot的环境变量: bootcmd 和bootargs

    u-bootcmdbootcmd是uboot自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数.   现在我的boo ...

  4. Win10系统如何设置所有程序默认以管理员身份运行?

    原文:Win10系统如何设置所有程序默认以管理员身份运行? 在win10系统中有些用户发现一些程序只有使用管理员身份运行能才打开,这样的话就感觉会麻烦很多,那么有没有办法设置所有程序都默认以管理员身份 ...

  5. POJ 3100 Root of the Problem || 1004 Financial Management 洪水!!!

    水两发去建模,晚饭吃跟没吃似的,吃完没感觉啊. ---------------------------分割线"水过....."--------------------------- ...

  6. Java 线程第三版 第九章 Thread调度 读书笔记

    一.Thread调度的概述 import java.util.*; import java.text.*; public class Task implements Runnable { long n ...

  7. css3-10 如何控制元素的显示和隐藏(display和visibility的区别是什么)

    css3-10 如何控制元素的显示和隐藏(display和visibility的区别是什么) 一.总结 一句话总结:使用的时候直接在元素的样式中设置display和visibility属性即可.推荐使 ...

  8. jquery画图插件jPainter

    jquery画图插件jPainter 一.总结 一句话总结:四年前的项目,四年无更新,不好用. 二.基于HTML5 Canvas和jQuery 的画图工具的实现 简介 HTML5 提供了强大的Canv ...

  9. php-post模拟登录,同步登录(摘自网络)

    这也是个老生常谈的话题了,上午花了点时间把这个问题整理了一下. 一般来说用PHP来模拟post提交数据有三种方法,file_get_contents.curl和socket. 写了个公用函数,专门用来 ...

  10. win7

    http://www.xitongiso.com/?pot http://www.potplayer.org/