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

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

考虑的一般的汽车是没有办法把瞬时速度提升到四位数的,所以我这里就放了三位数,完了根据实时数据,更新这三个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. IntelliJ IDEA 快速搭建 Spring MVC环境

    IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.Ant.JUnit.CVS整合.代码审查. 创新的GUI设计等方面的功能可以说是超常的. ...

  2. 【luoguP1219】【USACO】八皇后

    P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...

  3. 解决:fontawesome-webfont.woff2?v=4.6.3 404 (Not Found)

    用Bootstrap里面的字体,你项目中会报一个错,一个字体找不到,但我们的项目中却是存在这个字体的. 解决方法: 修改我们的Web.Config文件

  4. Angularjs 数据过滤

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  5. Extjs treePanel 加载等待框

    beforeload : { fn : function (store, operation, eOpts){ loadMask = new Ext.LoadMask(Ext.get(this.get ...

  6. Openresty最佳案例 | 第9篇:Openresty实现的网关权限控制

    转载请标明出处: http://blog.csdn.net/forezp/article/details/78616779 本文出自方志朋的博客 简介 采用openresty 开发出的api网关有很多 ...

  7. Angularjs基础(一)

    (一) 模型——视图——控制器 端对端的解决方案,AngularJS 试图成为WEB 应用中的一种段对端的解决方案.AngylarJS 的出众 之处如下:数据绑定,基本模板标识符,表单验证,路由,深度 ...

  8. 『ACM C++』 PTA 天梯赛练习集L1 | 001-006

    应师兄要求,在打三月底天梯赛之前要把PTA上面的练习集刷完,所以后面的时间就献给PTA啦~ 后面每天刷的题都会把答案代码贡献出来,如果有好的思路想法也会分享一下~ 欢迎大佬提供更好的高效率算法鸭~ - ...

  9. c/c++ 表白小程序

    1.开发工具: vs  vc(任选一个) 2.准备材料 : a.一首音乐 (注意:音乐要求重命名为  “x”  ) b.20张图片(注意: 图片要求重命名为  “1”  "2"   ...

  10. 【原创】从 列表的重复 到 用sum展开二层嵌套列表将子元素合并

      转载请注明出处:https://www.cnblogs.com/oceanicstar/p/9517159.html     ★像R语言里头有rep函数可以让向量的值重复,在python里面可以直 ...