Qt Qwdget 汽车仪表知识点拆解1 速度表示

简介: 先贴上效果图,

image.png

这里线主要说一下中间显示速度的显示制作的方式,在这里,自己专门写了一个数字的仪表


image.png

考虑的一般的汽车是没有办法把瞬时速度提升到四位数的,所以我这里就放了三位数,完了根据实时数据,更新这三个label的资源文件,在这个新的类中,只有一个函数,那就是设置数字

void set_number(int num = 0);

下面是实现方法,这个方法应该还可以优化,不过懒得优化了,先把功能堆出来。

 

void Number_1::set_number(int num)
{
    int temp1 = num;
    int temp2 = num;
    switch (num%10) {
    case 0:
        ui->label_3->setStyleSheet("border-image:url(:/source/number/0.png)");
        break;
    case 1:
        ui->label_3->setStyleSheet("border-image:url(:/source/number/1.png)");
        break;
    case 2:
        ui->label_3->setStyleSheet("border-image:url(:/source/number/2.png)");
        break;
    case 3:
        ui->label_3->setStyleSheet("border-image:url(:/source/number/3.png)");
        break;
    case 4:
        ui->label_3->setStyleSheet("border-image:url(:/source/number/4.png)");
        break;
    case 5:
        ui->label_3->setStyleSheet("border-image:url(:/source/number/5.png)");
        break;
    case 6:
        ui->label_3->setStyleSheet("border-image:url(:/source/number/6.png)");
        break;
    case 7:
        ui->label_3->setStyleSheet("border-image:url(:/source/number/7.png)");
        break;
    case 8:
        ui->label_3->setStyleSheet("border-image:url(:/source/number/8.png)");
        break;
    case 9:
        ui->label_3->setStyleSheet("border-image:url(:/source/number/9.png)");
        break;
    default:
        break;
    }
    switch (temp1/10) {
    case 0:
        ui->label_2->setStyleSheet("border-image:url(:/source/number/0.png)");
        break;
    case 1:
        ui->label_2->setStyleSheet("border-image:url(:/source/number/1.png)");
        break;
    case 2:
        ui->label_2->setStyleSheet("border-image:url(:/source/number/2.png)");
        break;
    case 3:
        ui->label_2->setStyleSheet("border-image:url(:/source/number/3.png)");
        break;
    case 4:
        ui->label_2->setStyleSheet("border-image:url(:/source/number/4.png)");
        break;
    case 5:
        ui->label_2->setStyleSheet("border-image:url(:/source/number/5.png)");
        break;
    case 6:
        ui->label_2->setStyleSheet("border-image:url(:/source/number/6.png)");
        break;
    case 7:
        ui->label_2->setStyleSheet("border-image:url(:/source/number/7.png)");
        break;
    case 8:
        ui->label_2->setStyleSheet("border-image:url(:/source/number/8.png)");
        break;
    case 9:
        ui->label_2->setStyleSheet("border-image:url(:/source/number/9.png)");
        break;
    default:
        break;
    }
    switch (temp2/100) {
    case 0:
        ui->label_1->setStyleSheet("border-image:url(:/source/number/0.png)");
        break;
    case 1:
        ui->label_1->setStyleSheet("border-image:url(:/source/number/1.png)");
        break;
    case 2:
        ui->label_1->setStyleSheet("border-image:url(:/source/number/2.png)");
        break;
    case 3:
        ui->label_1->setStyleSheet("border-image:url(:/source/number/3.png)");
        break;
    case 4:
        ui->label_1->setStyleSheet("border-image:url(:/source/number/4.png)");
        break;
    case 5:
        ui->label_1->setStyleSheet("border-image:url(:/source/number/5.png)");
        break;
    case 6:
        ui->label_1->setStyleSheet("border-image:url(:/source/number/6.png)");
        break;
    case 7:
        ui->label_1->setStyleSheet("border-image:url(:/source/number/7.png)");
        break;
    case 8:
        ui->label_1->setStyleSheet("border-image:url(:/source/number/8.png)");
        break;
    case 9:
        ui->label_1->setStyleSheet("border-image:url(:/source/number/9.png)");
        break;
    default:
        break;
    }
    if(num<10)
    {
        ui->label_3->move(64,0);
        ui->label_2->hide();
        ui->label_1->hide();
    }
    else if(num >=10 && num <100)
    {
        ui->label_2->show();
        ui->label_1->hide();
        ui->label_2->move(32,0);
        ui->label_3->move(96,0);
    }
    else
    {
        ui->label_1->show();
        ui->label_2->show();
        ui->label_1->move(0,0);
        ui->label_2->move(64,0);
        ui->label_3->move(128,0);
    }
}

在主程序中调用如下

number_center = new Number_1(ui->widget_center);
    number_center->setGeometry(0,0,192,72);
    number_center->show();

好了,这个速度显示的界面就搞定了

目录
相关文章
|
程序员 C++ Windows
Qt多线程分享——你必须知道的进程知识点
Qt多线程分享——你必须知道的进程知识点
Qt [GC9-23]:模拟汽车上电液晶仪表部分
Qt [GC9-23]:模拟汽车上电液晶仪表部分
119 0
Qt [GC9-23]:模拟汽车上电液晶仪表部分
Qt Qwdget 汽车仪表知识点拆解8 淡入效果
先贴上效果图,注意,没有写逻辑,都是乱动的
93 0
Qt Qwdget 汽车仪表知识点拆解8 淡入效果
Qt Qwdget 汽车仪表知识点拆解7 图像绘制,旋转
先贴上效果图,注意,没有写逻辑,都是乱动的
114 0
Qt Qwdget 汽车仪表知识点拆解7 图像绘制,旋转
|
2月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
129 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
27天前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
38 0
|
9天前
|
14天前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
49 2
|
24天前
Qt开发网络嗅探器02
Qt开发网络嗅探器02
|
24天前
|
存储 运维 监控
Qt开发网络嗅探器01
Qt开发网络嗅探器01

推荐镜像

更多