一款有意思的 Qt 飞行仪表控件

一款有意思的 Qt 飞行仪表控件最近在网上偶然发现一款 Qt 飞行仪表板控件 真的很酷哦 是一款开源软件 地址 https sourceforge net projects qfi 直接编译运行 美工还是不错的 控件操作非常简单 voidMainWind timerEvent QTimerEvent event

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++; } 

类似的工业仪表控件网上还有很多。真心感觉Qt拯救了C++!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226565.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午10:36
下一篇 2026年3月16日 下午10:36


相关推荐

  • mkdir命令Linux,mkdir命令在Linux中的应用

    mkdir命令Linux,mkdir命令在Linux中的应用mkdir 命令在 Linux 操作系统中主要用于创建文件夹 且创建的文件夹不能重名 下面小编将给大家介绍下 Linux 中 mkdir 命令的用法 以便你有个了解 1 命令格式 mkdir 选项 目录 2 命令功能 通过 mkdir 命令可以实现在指定位置创建以 DirName 指定的文件名 命名的文件夹或目录 要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限 并且 所创建的文件夹 目

    2026年3月16日
    2
  • echarts标题字体大小_echarts饼图显示百分比

    echarts标题字体大小_echarts饼图显示百分比解决echarts饼图显示百分比,和显示内容字体及大小//基于准备好的dom,初始化echarts实例    varpieEchart=echarts.init(document.getElementById(‘pieEchart’));     //指定图表的配置项和数据     varpieoption={       ti…

    2022年4月20日
    85
  • serverTimeZone_the server disconnected before

    serverTimeZone_the server disconnected beforejdbc连接MySQL时出现Theservertimezonevalue‘?й???’isunrecognized。。。错误:https://blog.csdn.net/YaphetS__YJ/article/details/77774874博文提到:jdbc-mysql6.0以上的版本必须配置serverTimezone参数。我的版本在此之上,构建URL时没配置所以报错解决…

    2022年8月30日
    4
  • Android面试题总结【完整详细版本”一”】(含答案)

    Android面试题总结【完整详细版本”一”】(含答案)1、四大组件是什么?Activity【活动】:用于表现功能。 Service【服务】:后台运行服务,不提供界面呈现。 BroadcastReceiver【广播接收器】:用来接收广播。 ContentProvider【内容提供商】:支持在多个应用中存储和读取数据,相当于数据库。2、四个组件的生命周期?Activity生命周期图及Fragment生命周期图…

    2022年5月11日
    45
  • 国内常用公共DNS服务器、各省运营商DNS服务器汇总

    原文  http://www.francissoung.com/2016/03/14/常用公共DNS服务器/主题 DNS服务器 服务器 运营商不知道大家有没有过网络是正常的,QQ可以正常登录、游戏也可以正常玩,但是网页无论如何都打不开。这就是电脑网络设置的DNS服务器有问题,不是其故障就是不工作了。换了DNS服务器成功解决问题。下边给大家分享一下国内比较大型大众常用

    2022年4月17日
    441
  • 2018最新APP Android UI设计规范「建议收藏」

    2018最新APP Android UI设计规范「建议收藏」设计稿尺寸:从目前市场主流设备尺寸来看,我们要用1080x1920PX来做安卓设计稿尺寸。以1080x1920px作为设计稿标准尺寸的原由:从中间尺寸向上和向下适配的时候界面调整的幅度最小,最方便适配。大屏幕时代依然以小尺寸作为设计尺寸,会限制设计师的设计视角。用主流尺寸来做设计稿尺寸,极大的提高了视觉还原和其他机型适配。所以做安卓设计稿时请以1…

    2022年6月18日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号