使用Qt简单谢了一个飞机的一小部分仪表,还没有写完,目前只写了一个界面,不过思想应该是一样的。

效果图如下

其中主要由转速表,和下面的部分数字显示构成

转速表代码

.h文件

  1. #ifndef CONTROL_ENGINE_H
  2. #define CONTROL_ENGINE_H
  3.  
  4. #include <QWidget>
  5. #include <QPainter>
  6. #include <QtMath>
  7.  
  8. #define PI 3.1415926
  9. #define GREEN 0,255,0
  10. #define YELLOW 211,137,50
  11. #define WHITE 255,255,255
  12.  
  13. namespace Ui {
  14. class Control_Engine;
  15. }
  16.  
  17. class Control_Engine : public QWidget
  18. {
  19. Q_OBJECT
  20.  
  21. public:
  22. explicit Control_Engine(QWidget *parent,int temp);
  23. ~Control_Engine();
  24. void set_Engine(int temp);
  25. private:
  26. bool eventFilter(QObject *temp1, QEvent *temp2);
  27. void draw_Engine();
  28. void draw_Percent();
  29. private:
  30. Ui::Control_Engine *ui;
  31. int num_Engine;
  32. int num_Percent;
  33. };
  34.  
  35. #endif // CONTROL_ENGINE_H

cpp文件

  1. #include "control_engine.h"
  2. #include "ui_control_engine.h"
  3. #include <QDebug>
  4. Control_Engine::Control_Engine(QWidget *parent,int temp) :
  5. QWidget(parent),
  6. ui(new Ui::Control_Engine)
  7. {
  8. ui->setupUi(this);
  9. ui->label_draw->installEventFilter(this);
  10. ui->label_percent->installEventFilter(this);
  11. num_Engine = 0;
  12. num_Percent = 0;
  13.  
  14. if(temp == 0)
  15. {
  16. ui->label_draw->move(50,0);
  17. ui->label->move(40,20);
  18. ui->label_percent->move(0,17);
  19. }
  20. else if(temp == 1)
  21. {
  22. ui->label_draw->move(0,0);
  23. ui->label->move(110,20);
  24. ui->label_percent->move(70,17);
  25. }
  26. }
  27.  
  28. Control_Engine::~Control_Engine()
  29. {
  30. delete ui;
  31. }
  32.  
  33. void Control_Engine::set_Engine(int temp)
  34. {
  35. num_Engine = temp;
  36. num_Percent = temp/2;
  37. update();
  38. }
  39.  
  40. bool Control_Engine::eventFilter(QObject *temp1, QEvent *temp2)
  41. {
  42. if((temp1 == ui->label_draw)&&temp2->type() == QEvent::Paint)
  43. {
  44. draw_Engine();
  45. }
  46. if((temp1 == ui->label_percent)&&temp2->type() == QEvent::Paint)
  47. {
  48. draw_Percent();
  49. }
  50. }
  51.  
  52. void Control_Engine::draw_Engine()
  53. {
  54.  
  55. if(num_Engine<=200)
  56. {
  57. QPainter painter1(ui->label_draw);
  58. painter1.setRenderHint(QPainter::Antialiasing,true);
  59. painter1.setPen(QPen(QColor(GREEN),3,Qt::SolidLine,Qt::FlatCap));
  60. painter1.drawArc(13,3,54,54,180*16,270*16);
  61. painter1.drawLine(3,30,14,30);
  62. QPainter painter2(ui->label_draw);
  63. painter2.setRenderHint(QPainter::Antialiasing,true);
  64. painter2.setPen(QPen(QColor(GREEN),3,Qt::SolidLine,Qt::FlatCap));
  65. painter2.drawLine(40,30,(40+27*qSin(num_Engine*PI/180.0)),(30-27*qCos(num_Engine*PI/180.0)));
  66. }
  67. else
  68. {
  69. QPainter painter1(ui->label_draw);
  70. painter1.setRenderHint(QPainter::Antialiasing,true);
  71. painter1.setPen(QPen(QColor(YELLOW),3,Qt::SolidLine,Qt::FlatCap));
  72. painter1.drawArc(13,3,54,54,180*16,270*16);
  73. painter1.drawLine(3,30,14,30);
  74. QPainter painter2(ui->label_draw);
  75. painter2.setRenderHint(QPainter::Antialiasing,true);
  76. painter2.setPen(QPen(QColor(YELLOW),3,Qt::SolidLine,Qt::FlatCap));
  77. painter2.drawLine(40,30,(40+27*qSin(num_Engine*PI/180.0)),(30-27*qCos(num_Engine*PI/180.0)));
  78. }
  79.  
  80. }
  81.  
  82. void Control_Engine::draw_Percent()
  83. {
  84. if(num_Percent<=100)
  85. {
  86. QPainter painter1(ui->label_percent);
  87. painter1.setPen(QPen(QColor(WHITE),1.5));
  88. QRect rect1(1,3,36,20);
  89. painter1.drawRect(rect1);
  90. QPainter painter2(ui->label_percent);
  91. painter2.setPen(QPen(QColor(GREEN),1.5));
  92. QString str = QString::number(num_Percent,10);
  93. QFont font("宋体",12,QFont::Bold);
  94. painter2.setFont(font);
  95. painter2.drawText(rect1,Qt::AlignCenter,str);
  96. }
  97. else
  98. {
  99. QPainter painter1(ui->label_percent);
  100. painter1.setPen(QPen(QColor(WHITE),1.5));
  101. QRect rect1(1,3,36,20);
  102. painter1.drawRect(rect1);
  103. QPainter painter2(ui->label_percent);
  104. painter2.setPen(QPen(QColor(YELLOW),1.5));
  105. QString str = QString::number(num_Percent,10);
  106. QFont font("宋体",12,QFont::Bold);
  107. painter2.setFont(font);
  108. painter2.drawText(rect1,Qt::AlignCenter,str);
  109. }
  110.  
  111. }

百分比代码

.h.

  1. #ifndef CONTROL_PERCENT_H
  2. #define CONTROL_PERCENT_H
  3.  
  4. #include <QWidget>
  5. #include <QPainter>
  6.  
  7. #define GREEN 0,255,0
  8. #define WHITE 255,255,255
  9.  
  10. namespace Ui {
  11. class Control_Percent;
  12. }
  13.  
  14. class Control_Percent : public QWidget
  15. {
  16. Q_OBJECT
  17.  
  18. public:
  19. explicit Control_Percent(QWidget *parent = 0);
  20. ~Control_Percent();
  21. void set_Percent(int temp);
  22. private:
  23. void draw_Percent();
  24. bool eventFilter(QObject *temp1, QEvent *temp2);
  25. private:
  26. Ui::Control_Percent *ui;
  27. int num_Percent;
  28. };
  29.  
  30. #endif // CONTROL_PERCENT_H

cpp

  1. #include "control_percent.h"
  2. #include "ui_control_percent.h"
  3.  
  4. Control_Percent::Control_Percent(QWidget *parent) :
  5. QWidget(parent),
  6. ui(new Ui::Control_Percent)
  7. {
  8. ui->setupUi(this);
  9. num_Percent = 0;
  10. ui->label_percent->installEventFilter(this);
  11. }
  12.  
  13. Control_Percent::~Control_Percent()
  14. {
  15. delete ui;
  16. }
  17.  
  18. void Control_Percent::set_Percent(int temp)
  19. {
  20. num_Percent = temp;
  21. }
  22.  
  23. void Control_Percent::draw_Percent()
  24. {
  25. QPainter painter1(ui->label_percent);
  26. painter1.setPen(QPen(QColor(WHITE),1.5));
  27. QRect rect1(1,3,36,20);
  28. painter1.drawRect(rect1);
  29. QPainter painter2(ui->label_percent);
  30. painter2.setPen(QPen(QColor(GREEN),1.5));
  31. QString str = QString::number(num_Percent,10);
  32. QFont font("宋体",12,QFont::Bold);
  33. painter2.setFont(font);
  34. painter2.drawText(rect1,Qt::AlignCenter,str);
  35. }
  36.  
  37. bool Control_Percent::eventFilter(QObject *temp1, QEvent *temp2)
  38. {
  39. if((temp1 == ui->label_percent)&&temp2->type() == QEvent::Paint)
  40. {
  41. draw_Percent();
  42. }
  43. }

剩下的其它小部分代码

界面初始化部分代码

  1. void MainWidget::set_Form_down(int temp)
  2. {
  3. switch (temp) {
  4. case 0:
  5. {
  6. if(ui->widget_Form_Down->isHidden())
  7. {
  8. ui->widget_Form_Down->show();
  9. }
  10. else
  11. {
  12. ui->label_Form_Down_Plane->setStyleSheet("border-image:url(:/Form_Down/Source/Form_Down/F22.png)");
  13. if(engine_left == NULL)
  14. {
  15. engine_left = new Control_Engine(ui->widget_Form_Down,LEFT);
  16. engine_left->setGeometry(17,20,120,80);
  17. }
  18. if(engine_right == NULL)
  19. {
  20. engine_right = new Control_Engine(ui->widget_Form_Down,RIGHT);
  21. engine_right->setGeometry(180,20,120,80);
  22. }
  23.  
  24. // QPalette palette;
  25. // palette.setColor(QPalette::WindowText,Qt::red);
  26. // ui->label_ENG->setPalette(palette);
  27. // QFont font;
  28. // font.setPointSize(12);
  29. // ui->label_ENG->setFont(font);
  30. // ui->label_ENG->setText("TEST");
  31. // ui->label_ENG->setAlignment(Qt::AlignCenter);
  32. if(percent1 == NULL)
  33. {
  34. percent1 = new Control_Percent(ui->widget_Form_Down);
  35. percent1->setGeometry(30,170,50,26);
  36. percent1->set_Percent(50); //test
  37. }
  38. if(percent2 == NULL)
  39. {
  40. percent2 = new Control_Percent(ui->widget_Form_Down);
  41. percent2->setGeometry(245,170,50,26);
  42. percent2->set_Percent(50); //test
  43. }
  44. if(percent3 == NULL)
  45. {
  46. percent3 = new Control_Percent(ui->widget_Form_Down);
  47. percent3->setGeometry(30,240,50,26);
  48. percent3->set_Percent(50); //test
  49. }
  50. if(percent4 == NULL)
  51. {
  52. percent4 = new Control_Percent(ui->widget_Form_Down);
  53. percent4->setGeometry(245,240,50,26);
  54. percent4->set_Percent(50); //test
  55. }
  56. }
  57.  
  58. break;
  59. }
  60. case 1:
  61. ui->widget_Form_Down->hide();
  62. break;
  63. default:
  64. break;
  65. }
  66. }

绘制其它部分代码

  1. void MainWidget::draw_Gun()
  2. {
  3. QPainter painter1(ui->label_GUN);
  4. painter1.setPen(QPen(QColor(WHITE),1.5));
  5. QRect rect1(1,3,76,22);
  6. painter1.drawRect(rect1);
  7. QPainter painter2(ui->label_GUN);
  8. painter2.setPen(QPen(QColor(GREEN),1.5));
  9. QString str = "GUN "+QString::number(num_GUN,10);
  10. QFont font("宋体",12,QFont::Bold);
  11. painter2.setFont(font);
  12. painter2.drawText(rect1,Qt::AlignCenter,str);
  13. }
  14.  
  15. void MainWidget::draw_Information()
  16. {
  17. QPainter painter1(ui->label_Information);
  18. painter1.setPen(QPen(QColor(WHITE),1.5));
  19. QRect rect1(1,3,118,45);
  20. QRect rect2(1,3,118,24);
  21. QRect rect3(1,24,118,24);
  22. painter1.drawRect(rect1);
  23. QPainter painter2(ui->label_Information);
  24. painter2.setPen(QPen(QColor(WHITE),1.5));
  25. QString str = "BAY DOORS";
  26. QFont font("宋体",12,QFont::Bold);
  27. painter2.setFont(font);
  28. painter2.drawText(rect2,Qt::AlignCenter,str);
  29.  
  30. QPainter painter3(ui->label_Information);
  31. if(BAY_DOORS == "CLOSED")
  32. {
  33. painter3.setPen(QPen(QColor(GREEN),1.5));
  34. }
  35. else
  36. {
  37. painter3.setPen(QPen(QColor(RED),1.5));
  38. }
  39. QFont font1("宋体",12,QFont::Bold);
  40. painter3.setFont(font1);
  41. painter3.drawText(rect3,Qt::AlignCenter,BAY_DOORS);
  42. }
  43.  
  44. void MainWidget::draw_Bay()
  45. {
  46. QPainter painter(ui->label_BAY);
  47. QRect rect1(0,0,30,16);
  48.  
  49. if(BAY_DOORS == "CLOSED")
  50. {
  51. painter.setPen(QPen(QColor(GREEN),1.5));
  52. }
  53. else
  54. {
  55. painter.setPen(QPen(QColor(RED),1.5));
  56. }
  57. QString str = "BAY";
  58. QFont font("宋体",12,QFont::Bold);
  59. painter.setFont(font);
  60. painter.drawText(rect1,Qt::AlignCenter,str);
  61. }

Qt 飞机仪表显示的更多相关文章

  1. Qt自适应大小显示图片,添加菜单

    由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的.听同学说Qt不错,就用Qt做UI了. 本文主要介绍三个内容:在Qt Creator中使用OpenCV2.Qt中自适应显示图片 ...

  2. Qt全屏显示窗口、子窗口的相关函数

    Qt全屏显示函数         window.showFullScreen() Qt最大化显示函数         window.showMaximized() Qt最小化显示函数         ...

  3. Qt支持中文显示

    Qt支持中文显示<1>.在代码中添加以下代码 QTextCodec* codec = QTextCodec::codecForLocale(); if (codec != NULL) { ...

  4. QT+OpenGL读取显示图片,OpenGL在QT里的刷新问题(好几篇)

    GLuint readImage(char *filename){    GLuint tex_id;    GLint alignment; QImage tex, buf;    buf.load ...

  5. Qt 让Label显示图片并把图片居中

    Qt 让Label显示图片并把图片居中   QPixmap image("./13.jpg"); QPixmap fitpixmap=image.scaled(ui->lab ...

  6. Qt 汽车仪表再次编写,Widget,仪表显示,绘制界面

    感谢某网友提供UI让我练练手,上目前的效果 还在晚上,代码等后面在贴出来,就是出来显摆一下

  7. QT的QWebView显示网页不全

    最近使用QWebView控件遇到一个问题,就是无论窗口多大,网页都显示那么大,而且,显示不完全,有滚动条 试过使用showMaximized()方法, 还是一样,网上一直说是布局问题,也没说清楚是虾米 ...

  8. Qt通过QToolTip显示浮动信息

    QToolTip类的应用十分简单,其QToolTip类中全都是静态方法,如果要显示浮动信息的话使用该函数即可: void QToolTip::showText ( const QPoint & ...

  9. 【转】发布的QT程序无法显示图标和图片的问题

    在windows下编译好的QT程序在其他没有安装QT的机器上会出现图标和图片无法正常显示的问题. 这时我们可以通过以下方式来解决: 在release文件夹里创建plugins文件夹,并将QT安装目录下 ...

随机推荐

  1. 【luogu P2860 [USACO06JAN]冗余路径Redundant Paths】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2860 考虑在无向图上缩点. 运用到边双.桥的知识. 缩点后统计度为1的点. 度为1是有一条路径,度为2是有两 ...

  2. Android学习笔记_76_AsyncQueryHandler的应用

    研究AsyncQueryHandler这个类的时候遇到了几个重要的不清楚的知识点 1. Handler与Thread,Looper的关系 2. HandlerThread是干什么用的 3. Threa ...

  3. C# 动态改变webservice的访问地址

    1.添加一个App.config配置文件. 2.配置服务http://Lenovo-PC:80/EvisaWS/WharfService?wsdl,那么在上面的文件中就会自动生成服务的配置: < ...

  4. wordpress二次开发第一个jquery对比

    $(document).ready(function(){ $("input").focus(function(){ $("input").css(" ...

  5. vue开发工具node.js及构建工具webpack

    1.概念 node.js:可以运行JavaScript的服务平台,可以把它当做一个后端程序,只是它的开发语言是JavaScript (通常情况下,JavaScript的运行环境都是浏览器,因此Java ...

  6. Struts2 第五讲 -- Struts2与Servlet的API解耦

    为了避免与 Servlet API 耦合在一起, 方便 Action 做单元测试, Struts2 对 HttpServletRequest, HttpSession 和 ServletContext ...

  7. Question 20171115 String&&StringBuffer&&StringBuilder的区别与联系?

    Question 20171114 String&&StringBuffer&&StringBuilder的区别和联系 创建成功的String对象,其长度是固定的,内容 ...

  8. oracle 的分页查询与mysql 的分页查询

    oracle 的分页查询: select * from (select o.*,rownum rn  from Persons o) where rn >40 and rn <=60 : ...

  9. chromium之tracked

    //------------------------------------------------------------------------------ // Tracked is the b ...

  10. mysql 查询各个阶段所消耗的时间