HMI-29-【运动模式】转速表实现及中心油耗仪表实现

简介: 今天我要搞得就是中心的这个表,指针的是转速表 中心显示的油耗表。

HMI-29-【运动模式】转速表实现及中心油耗仪表实现

​ 今天我要搞得就是中心的这个表,指针的是转速表 中心显示的油耗表。


[TOC]

关键字: QPainternumberOpacityStyleSheetQt

实现转速表

​ 前面准备工作还是一样,从PS中导出需要的资源文件,并吧资源文件稍微加工下导入到工程中。转速表比速度实现要稍微简单一点,因为这就是一个标准的圆,只需要绘制图片,控制旋转角度即可。代码如下:

void MDS_Center::drawPointer(int angle)
{
    QPainter painter(ui->label_pointer);
    painter.setRenderHint((QPainter::SmoothPixmapTransform));
    painter.setRenderHint(QPainter::HighQualityAntialiasing);
    painter.translate(337,337);
    painter.save();
    painter.rotate(angle);
    painter.drawPixmap((-960),-360,1920,720,QPixmap(":/Sport/Resources/MeterDisplay/Sport/MDSC/pointer.png"));
    painter.drawPixmap(-213,-213,426,426,QPixmap(":/Sport/Resources/MeterDisplay/Sport/MDSC/hu.png"));
    painter.setOpacity(m_shadeOpacity);
    painter.drawPixmap((-960),-360,1920,720,QPixmap(":/Sport/Resources/MeterDisplay/Sport/MDSC/shadow.png"));
    painter.restore();
}

实现油耗表

​ 油耗表和之前舒适模式下内容一直,都是解析数字,替换资源,这里直接贴上代码,代码如下:

void MDS_CenteerMiniDisplay::drawRAFE(double rafe)
{
    int point,one,ten,temp;
    temp = rafe*10;
    point = temp%10;
    one = temp%100/10;
    ten = temp/100;

    switch (point) {
    default:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/0.png);}");
        break;
    }
    case 0:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/0.png);}");
        break;
    }
    case 1:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/1.png);}");
        break;
    }
    case 2:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/2.png);}");
        break;
    }
    case 3:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/3.png);}");
        break;
    }
    case 4:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/4.png);}");
        break;
    }
    case 5:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/5.png);}");
        break;
    }
    case 6:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/6.png);}");
        break;
    }
    case 7:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/7.png);}");
        break;
    }
    case 8:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/8.png);}");
        break;
    }
    case 9:
    {
        ui->label_1->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/9.png);}");
        break;
    }

    }

    switch (one) {
    default:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/0.png);}");
        break;
    }
    case 0:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/0.png);}");
        break;
    }
    case 1:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/1.png);}");
        break;
    }
    case 2:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/2.png);}");
        break;
    }
    case 3:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/3.png);}");
        break;
    }
    case 4:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/4.png);}");
        break;
    }
    case 5:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/5.png);}");
        break;
    }
    case 6:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/6.png);}");
        break;
    }
    case 7:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/7.png);}");
        break;
    }
    case 8:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/8.png);}");
        break;
    }
    case 9:
    {
        ui->label_2->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/9.png);}");
        break;
    }

    }

    switch (ten) {
    default:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/0.png);}");
        break;
    }
    case 0:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/0.png);}");
        break;
    }
    case 1:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/1.png);}");
        break;
    }
    case 2:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/2.png);}");
        break;
    }
    case 3:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/3.png);}");
        break;
    }
    case 4:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/4.png);}");
        break;
    }
    case 5:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/5.png);}");
        break;
    }
    case 6:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/6.png);}");
        break;
    }
    case 7:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/7.png);}");
        break;
    }
    case 8:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/8.png);}");
        break;
    }
    case 9:
    {
        ui->label_3->setStyleSheet("QLabel{border-image:url(:/Sport/Resources/MeterDisplay/Sport/MDSC/number/9.png);}");
        break;
    }

    }
}

整体进度

​ 目前已实现转速表,速度表和中心仪表中的油耗表实现,如下图:

说明:

本项目中所使借鉴原型来自:[吉利] 博瑞GE | 仪表HMI设计吉利汽车HMI项目

设计图的所有权和解释权都归吉利汽车所有。

本项目所有资源文件均有打不死的小海复刻制作。

本项目代码暂时不会开源,有需要的源码的可与我联系,左上角二维码加微信。

本项目仅限学习交流、禁止商业使用。


博客签名2021

相关文章
|
6月前
|
存储 传感器 编解码
LabVIEW风力涡轮机的雷电流测量系统中集成高速摄像机
LabVIEW风力涡轮机的雷电流测量系统中集成高速摄像机
44 1
HMI-37-【节能模式】中心仪表实现
节能模式下,做难做的就是中心仪表了,其他两个都很简单了。那么今天就把这个给实现了。
HMI-37-【节能模式】中心仪表实现
HMI-38-【节能模式】中心仪表mini仪表速度表实现
今天我们来做中心仪表的mini仪表中的车速表,就是三个数字显示,数字素材因为我的艺术家给我设计的时候,偷懒了,没有用下图中的字体,还是沿用了运动和舒适模式中的字体,咱们就将就的用吧,没有办法呀,咱也不会搞美术呀。
HMI-38-【节能模式】中心仪表mini仪表速度表实现
HMI-30-【运动模式】仪表右侧模块开始编写
今天喝了点小茶水,来了点写代码的感觉,那么今天就尝试吧运动模式仪表右侧的模块写了,我的资源文件中,只有音乐,所以右侧模块还是先把框架搭好,仅实现音乐模块。
HMI-30-【运动模式】仪表右侧模块开始编写
HMI-39-【节能模式】实现中心仪表转速表自检及左右仪表布局
昨天我们把中心仪表的迷你仪表应写出来了,并且实现了速度表的显示,今天我们来搞一下这个中心仪表的自检,也就是转速表的自检。
HMI-39-【节能模式】实现中心仪表转速表自检及左右仪表布局
HMI-34-【运动模式】实现运动模式的UI上电逻辑控制
今天这界面上没有实际的增加,仅仅是实把运动模式UI上电控制逻辑实现了一下,其实到这个模块的时候,就会发现之前在写舒适模式的时候的一些问题了,有好内容可以抽象出来了,不用每次都实现一遍了。不过现在还比较懒,还是先以实现为主,和面的内容放在优化里面。废话不多说,开始搞事情。不过为了吸你们开下去,现在把目前进度放在了。
HMI-35-【运动模式】实现速度表和转速表自检
今天咱们给速度表和转速表增加一个自检功能, 就是从小走大最大再回到最小。用到的和上篇一样,也是有一个自己写的定时器。
|
C++
c++搭建的车道线和路牌的识别系统 使用qt界面
c++搭建的车道线和路牌的识别系统 使用qt界面
59 0
|
机器学习/深度学习 传感器 开发框架
【控制】车辆自主导航控制系统附matlab代码
【控制】车辆自主导航控制系统附matlab代码
西门子S7-200 SMART运动控制功能,使用向导组态运动轴
从今天开始我们来介绍西门子S7-200 SMART运动控制功能,本篇我们先来学习如何使用向导组态运动轴。
西门子S7-200 SMART运动控制功能,使用向导组态运动轴