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

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

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

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

Qt Qwdget 汽车仪表知识点拆解1 速度表示的更多相关文章

  1. Qt Qwdget 汽车仪表知识点拆解6 自定义控件

    先贴上效果图,注意,没有写逻辑,都是乱动的 这里说一下控件自定义 图中标出的部分都是自定义的控件 这里如果我们有批量类似的功能,就可以使用自定义控件的方式,这里我已下面的自定义控件说一下,上面的在上一 ...

  2. Qt Qwdget 汽车仪表知识点拆解2 图像放大

    先贴上效果图,注意,没有写逻辑,都是乱动的 这里讲下 这个小汽车的进入过程,其实这个说白了就没有技术含量了,本来应该趁着这个机会学习一下Qt的动画机制,不过随机一想,这个自己写也累不到那里去 下面说下 ...

  3. Qt Qwdget 汽车仪表知识点拆解8 淡入效果

    先贴上效果图,注意,没有写逻辑,都是乱动的 看下面的开始,开始的时候有一个带入的效果,这里有一个坑, 网上大部分都是调用下面这个函数 setWindowOpacity(); 但是,你会发现,在你的子窗 ...

  4. Qt Qwdget 汽车仪表知识点拆解7 图像绘制,旋转

    先贴上效果图,注意,没有写逻辑,都是乱动的 看下最中心的指针旋转,这里使用的QPainter的绘制函数 要显示复杂的效果,需要分层 void Widget::draw_number_pointer() ...

  5. Qt Qwdget 汽车仪表知识点拆解5 标题栏图标闪烁

    先贴上效果图,注意,没有写逻辑,都是乱动的 看下最上面的部分,有一些仪表图标在闪烁,如果一个一个写,也是可以实现的,不过感觉要累死的节奏 这里我写了一个我自己的Label,完了把把这些QLabel提升 ...

  6. Qt Qwdget 汽车仪表知识点拆解4 另类进度条实现

    先贴上效果图,注意,没有写逻辑,都是乱动的 注意看一下,右面的这两个进度条,有瑕疵,就是我没有把图片处理干净,这里犹豫我不知道这个具体的弧度,也没法绘制,就偷懒了 现在上面放一个UI,把两个进度条抠空 ...

  7. Qt Qwdget 汽车仪表知识点拆解3 进度条编写

    先贴上效果图,注意,没有写逻辑,都是乱动的 这篇我来说说左侧的这个进度条的实现原理,其实更简单,哈哈哈 有一个大的widget,根据素材,我放了10个label 剩下的就是写一个函数,根据数据的不同, ...

  8. Qt中常用知识点

    1:QRegExp 正则表达式 QRegExp regExp("[a-zA-Z][1-9][0-9]{0,2}"); xxx->setValidator(new QRegEx ...

  9. [转]Qt 5.5 操作 Excel 的速度 效率问题

    转自:http://blog.csdn.net/li494816491/article/details/50274305 1. QAxObject *_excelObject1 =newQAxObje ...

随机推荐

  1. 【洛谷P3959】[NOIP2017] 宝藏

    宝藏 题目链接 首先,打了一个prim,得了45分 #include<iostream> #include<cstring> #include<cstdio> #i ...

  2. 【luogu P1456 Monkey King】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1456 左偏树并查集不加路径压缩吧... #include <cstdio> #include & ...

  3. GYM 101550 G.Game Rank(模拟)

    The gaming company Sandstorm is developing an online two player game. You have been asked to impleme ...

  4. 188. Best Time to Buy and Sell Stock IV——LeetCode

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  5. IOS NSNotification 通知

    一. 先看下官方对NSNotification通知的解释 1. NSNotification 通知 @interface NSNotification : NSObject <NSCopying ...

  6. web 打印功能

    在项目开发中有时候会碰到要求打印页面中的数据的功能需求.需求原因主要有两点吧,一是需要打印的数据只是页面的一部分即页面的区域打印,比如只需要打印页面中表格里面选中的数据等,二是需要打印出来的样式和页面 ...

  7. 第十四届浙江财经大学程序设计竞赛重现赛--A-A Sad Story

    链接:https://www.nowcoder.com/acm/contest/89/A 来源:牛客网 1.题目描述 The Great Wall story of Meng Jiangnv’s Bi ...

  8. Java中replace与replaceAll区别

    看门见山 1.java中replace API: replace(char oldChar, char newChar):寓意为:返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所 ...

  9. layUI 下拉框遮挡

    原项目中把layui内置的富文本编辑器替换成了百度的ueditor,但是出现了一点问题,下拉框被遮挡了! 在网上查询了一些方法,发现最简单的方法就是在当前页面的<head>标签中加入 &l ...

  10. thinkphp3.2.3实现多条件查询实例.

    $data = M("datainfo"); $projectsname = I('get.projectsname');//前台提交的模糊查询字段 // 查询条件 $where ...