最近在网上偶然发现一款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 飞行仪表控件的更多相关文章

  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. JS面向对象程序设计(OOP:Object Oriented Programming)

    你是如何理解编程语言中的面向对象的? 我们研究JS和使用JS编程本身就是基于面向对象的思想来开发的,JS中的一切内容都可以统称为要研究的“对象”,我们按照功能特点把所有内容划分成“几个大类,还可以基于 ...

  2. 素数表(Eratosthenes)

    怎么判断一个数是素数? 常规的方法是枚举从2开始的数,看看是否能被整除. 但是,如果要判断的数很多的时候,那么效率会十分低下.... 一个优化的方法是不用判断比这个数小的所有数(到平方根位置),而是判 ...

  3. GCC 编译 --sysroot

    -sysroot 的作用 如果在编译时指定了-sysroot就是为编译时指定了逻辑目录.编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前面加上逻辑目录. 如 ...

  4. HTML 5 中FileReader的使用

    FileReader 接口主要用来把文件读入到内存中,而且读取文件里的数据.FileReader接口提供了一个异步API,使用该API能够在浏览器主线程中异步訪问文件系统 ,读取文件里的数据. Fil ...

  5. vc6.0 点编译时提示Cannot complile the file 'D:\souce-code\vc-workspace\对话框\MainFrm.h'; no compile tool is

    问题描写叙述: vc6.0程序,点击编译时提示对话框,内容为: Cannot complile the file 'D:\souce-code\vc-workspace\对话框\MainFrm.h'; ...

  6. SpringBoot学习:获取yml和properties配置文件的内容(转)

    项目下载地址:http://download.csdn.net/detail/aqsunkai/9805821 (一)yml配置文件: pom.xml加入依赖: <!-- 支持 @Configu ...

  7. [AngularFire2] Pagination

    Let's see how to do pagination in Firebase: For the init loading, we only want 3 items: findLessonsK ...

  8. ZOJ 2405 Specialized Four-Digit Numbers

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1405 要求找出4位数所有10进制.12进制.16进制他们各位数字之和相等. # ...

  9. 根据PID获取进程名&根据进程名获取PID

    Liunx中 通过进程名查找进程PID可以通过 pidof [进程名] 来查找.反过来 ,相同通过PID查找进程名则没有相关命令.在linux根目录中,有一个/proc的VFS(虚拟文件系统),系统当 ...

  10. linux下FAT32格式u盘只读的问题及解决方法

    以下是网上看到的解决办法:http://blog.csdn.net/heqiuya/article/details/7870554 其实是掉电保护,之前挂在的SD变成了制度文件,只需要将SD卡重新挂载 ...