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


    先贴上效果图,注意,没有写逻辑,所以这些都是乱动的

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

    考虑的一般的汽车是没有办法把瞬时速度提升到四位数的,所以我这里就放了三位数,完了根据实时数据,更新这三个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();



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

  • 相关阅读:
    封装组件发布到npm上,项目中可以npm install ,使用vue+wwebpack+dotenv搭建项目,.env配置多个环境.这套命令主要是为了封装npm组件(不同环境也许用不到),最简单的搭建没有冗余的代码和依赖(第一步)
    封装组件发布到npm上,项目中可以npm install,这里做一个简单的封装例子(第二步)
    封装组件发布到npm上,项目中可以npm install 然后直接使用(第三步)
    jenkins 搭建
    fastadmin 链接打开新tab页面
    fastadmin 的多表关联查询
    【Linux】Linux下安装node及npm
    在PhpStrom中配置Docker作为本地开发环境
    OpenResty 使用介绍
    TVM:Python 创建 Relay 表达式
  • 原文地址:https://www.cnblogs.com/DreamDog/p/9160053.html
Copyright © 2020-2023  润新知