今天是2016年的最后一个工作日,在这个最后工作日里面,和以为网友要了一点练手的素材文件,经过网友确认,不涉及商业机密,在这里分享一下,如侵权,请联系我删除、

先上程序运行图

这里显示数字,闪烁等都没有问题,唯一的问题就是这个速度指针的绘制问题,在代码中我使用的是用QPainter绘制image。锯齿好严重,这里我已经开了抗锯齿

painter.setRenderHint(QPainter::Antialiasing,true);

但是效果几乎没有,是操作不对,还是需要特殊设置了

剩下的就是分享代码了

首先就是这个指针的绘制代码

ui->label->setStyleSheet("border-image:url(:/source/beijing.bmp)");ui->label->installEventFilter(this);image_pointer.load(":/source/222.png");

这里主要就是设置大背景,就是后面的那么最大的仪表界面,剩下的就是为这个要在Qlabel上面绘制指针,需要为QLabel注册绘制事件,否则程序会滤掉这个绘制事件

绘制指针代码

void Widget::painter_car()
{QPainter painter(ui->label);painter.setRenderHint(QPainter::Antialiasing,true);painter.translate(960,360);painter.save();painter.rotate(pointer_number);QRectF target(-40,-267.0,80.0,336.0);QRectF source(0.0,0.0,80.0,336.0);painter.drawImage(target,image_pointer,source);painter.restore();}

这里新建Qpainter继承值Qlabel

设置开抗锯齿,几乎没有效果,我都怀疑执行了没有

移动Qpainter 的原始坐标点

完了就是简单的绘制 ,

剩下的就是数字仪表的显示

这里我新建了一个专门显示数字的界面

这个几面来负责显示七位数字

数字显示源代码:

头文件

#ifndef NUMBER_H
#define NUMBER_H#include <QWidget>namespace Ui {
class Number;
}class Number : public QWidget
{Q_OBJECTpublic:explicit Number(QWidget *parent = 0);~Number();void set_Number(int number);private:void set_image(int flag,int number);
private:Ui::Number *ui;
};#endif // NUMBER_H

源文件

#include "number.h"
#include "ui_number.h"
#include <QDebug>
Number::Number(QWidget *parent) :QWidget(parent),ui(new Ui::Number)
{ui->setupUi(this);
}Number::~Number()
{delete ui;
}void Number::set_Number(int number)
{if(number==0){set_image(1,0);}set_image(1,number%10);if(number/10>0){set_image(2,number/10);}if(number/100>0){set_image(3,number/100);}if(number/1000>0){set_image(4,number/1000);}if(number/10000>0){set_image(5,number/10000);}if(number/100000>0){set_image(6,number/100000);}if(number/1000000>0){set_image(7,number/1000000);}}void Number::set_image(int flag, int number)
{switch (flag) {case 1:switch (number) {case 0:ui->label->setStyleSheet("border-image:url(:/source/0.png)");break;case 1:ui->label->setStyleSheet("border-image:url(:/source/1.png)");break;case 2:ui->label->setStyleSheet("border-image:url(:/source/2.png)");break;case 3:ui->label->setStyleSheet("border-image:url(:/source/3.png)");break;case 4:ui->label->setStyleSheet("border-image:url(:/source/4.png)");break;case 5:ui->label->setStyleSheet("border-image:url(:/source/5.png)");break;case 6:ui->label->setStyleSheet("border-image:url(:/source/6.png)");break;case 7:ui->label->setStyleSheet("border-image:url(:/source/7.png)");break;case 8:ui->label->setStyleSheet("border-image:url(:/source/8.png)");break;case 9:ui->label->setStyleSheet("border-image:url(:/source/9.png)");break;}break;case 2:switch (number) {case 0:ui->label_2->setStyleSheet("border-image:url(:/source/0.png)");break;case 1:ui->label_2->setStyleSheet("border-image:url(:/source/1.png)");break;case 2:ui->label_2->setStyleSheet("border-image:url(:/source/2.png)");break;case 3:ui->label_2->setStyleSheet("border-image:url(:/source/3.png)");break;case 4:ui->label_2->setStyleSheet("border-image:url(:/source/4.png)");break;case 5:ui->label_2->setStyleSheet("border-image:url(:/source/5.png)");break;case 6:ui->label_2->setStyleSheet("border-image:url(:/source/6.png)");break;case 7:ui->label_2->setStyleSheet("border-image:url(:/source/7.png)");break;case 8:ui->label_2->setStyleSheet("border-image:url(:/source/8.png)");break;case 9:ui->label_2->setStyleSheet("border-image:url(:/source/9.png)");break;}break;case 3:switch (number) {case 0:ui->label_3->setStyleSheet("border-image:url(:/source/0.png)");break;case 1:ui->label_3->setStyleSheet("border-image:url(:/source/1.png)");break;case 2:ui->label_3->setStyleSheet("border-image:url(:/source/2.png)");break;case 3:ui->label_3->setStyleSheet("border-image:url(:/source/3.png)");break;case 4:ui->label_3->setStyleSheet("border-image:url(:/source/4.png)");break;case 5:ui->label_3->setStyleSheet("border-image:url(:/source/5.png)");break;case 6:ui->label_3->setStyleSheet("border-image:url(:/source/6.png)");break;case 7:ui->label_3->setStyleSheet("border-image:url(:/source/7.png)");break;case 8:ui->label_3->setStyleSheet("border-image:url(:/source/8.png)");break;case 9:ui->label_3->setStyleSheet("border-image:url(:/source/9.png)");break;}break;case 4:switch (number) {case 0:ui->label_4->setStyleSheet("border-image:url(:/source/0.png)");break;case 1:ui->label_4->setStyleSheet("border-image:url(:/source/1.png)");break;case 2:ui->label_4->setStyleSheet("border-image:url(:/source/2.png)");break;case 3:ui->label_4->setStyleSheet("border-image:url(:/source/3.png)");break;case 4:ui->label_4->setStyleSheet("border-image:url(:/source/4.png)");break;case 5:ui->label_4->setStyleSheet("border-image:url(:/source/5.png)");break;case 6:ui->label_4->setStyleSheet("border-image:url(:/source/6.png)");break;case 7:ui->label_4->setStyleSheet("border-image:url(:/source/7.png)");break;case 8:ui->label_4->setStyleSheet("border-image:url(:/source/8.png)");break;case 9:ui->label_4->setStyleSheet("border-image:url(:/source/9.png)");break;}break;case 5:switch (number) {case 0:ui->label_5->setStyleSheet("border-image:url(:/source/0.png)");break;case 1:ui->label_5->setStyleSheet("border-image:url(:/source/1.png)");break;case 2:ui->label_5->setStyleSheet("border-image:url(:/source/2.png)");break;case 3:ui->label_5->setStyleSheet("border-image:url(:/source/3.png)");break;case 4:ui->label_5->setStyleSheet("border-image:url(:/source/4.png)");break;case 5:ui->label_5->setStyleSheet("border-image:url(:/source/5.png)");break;case 6:ui->label_5->setStyleSheet("border-image:url(:/source/6.png)");break;case 7:ui->label_5->setStyleSheet("border-image:url(:/source/7.png)");break;case 8:ui->label_5->setStyleSheet("border-image:url(:/source/8.png)");break;case 9:ui->label_5->setStyleSheet("border-image:url(:/source/9.png)");break;}break;case 6:switch (number) {case 0:ui->label_6->setStyleSheet("border-image:url(:/source/0.png)");break;case 1:ui->label_6->setStyleSheet("border-image:url(:/source/1.png)");break;case 2:ui->label_6->setStyleSheet("border-image:url(:/source/2.png)");break;case 3:ui->label_6->setStyleSheet("border-image:url(:/source/3.png)");break;case 4:ui->label_6->setStyleSheet("border-image:url(:/source/4.png)");break;case 5:ui->label_6->setStyleSheet("border-image:url(:/source/5.png)");break;case 6:ui->label_6->setStyleSheet("border-image:url(:/source/6.png)");break;case 7:ui->label_6->setStyleSheet("border-image:url(:/source/7.png)");break;case 8:ui->label_6->setStyleSheet("border-image:url(:/source/8.png)");break;case 9:ui->label_6->setStyleSheet("border-image:url(:/source/9.png)");break;}break;case 7:switch (number) {case 0:ui->label_7->setStyleSheet("border-image:url(:/source/0.png)");break;case 1:ui->label_7->setStyleSheet("border-image:url(:/source/1.png)");break;case 2:ui->label_7->setStyleSheet("border-image:url(:/source/2.png)");break;case 3:ui->label_7->setStyleSheet("border-image:url(:/source/3.png)");break;case 4:ui->label_7->setStyleSheet("border-image:url(:/source/4.png)");break;case 5:ui->label_7->setStyleSheet("border-image:url(:/source/5.png)");break;case 6:ui->label_7->setStyleSheet("border-image:url(:/source/6.png)");break;case 7:ui->label_7->setStyleSheet("border-image:url(:/source/7.png)");break;case 8:ui->label_7->setStyleSheet("border-image:url(:/source/8.png)");break;case 9:ui->label_7->setStyleSheet("border-image:url(:/source/9.png)");break;}break;}
}

这里代码开着有点多,其实没有什么含量,说白了就是给七个QLabel换背景

使用情况

    number_1 = new Number(ui->widget_1);number_1->resize(175,32);number_1->move(0,0);number_1->set_Number(temp);number_1->show();number_2 = new Number(ui->widget_2);number_2->resize(175,32);number_2->move(0,0);number_2->set_Number(temp);number_2->show();number_3 = new Number(ui->widget_3);number_3->resize(175,32);number_3->move(0,0);number_3->set_Number(temp);number_3->show();number_4 = new Number(ui->widget_4);number_4->resize(175,32);number_4->move(0,0);number_4->set_Number(temp);number_4->show();number_5 = new Number(ui->widget_5);number_5->resize(175,32);number_5->move(0,0);number_5->set_Number(temp);number_5->show();number_6 = new Number(ui->widget_6);number_6->resize(175,32);number_6->move(0,0);number_6->set_Number(temp);number_6->show();

新建6个界面实例,

bool flag_pointer = true;
void Widget::timerout_poinyer()
{if(flag_pointer){if(pointer_number<135){++pointer_number;if(pointer_number == 135){flag_pointer = false;}}}else{if(pointer_number>-135){--pointer_number;if(pointer_number == -135){flag_pointer = true;}}}++temp;if(temp>999999){temp = 0;}number_1->set_Number(temp);number_2->set_Number(temp);number_3->set_Number(temp);number_4->set_Number(temp);number_5->set_Number(temp);number_6->set_Number(temp);this->update();
}

在这里来刷新指针和刷新数字界面的显示

大家可能看到图中有的界面是有那个没有系安全带的图标,有的有,这里是实现了一个1Hz的图标闪烁,其实原理很简单,就是QLabel的隐藏,显示,再隐藏,再显示。。。

实现代码:

void Widget::timeout_people()
{if(ui->label_people->isHidden()){ui->label_people->show();}else{ui->label_people->hide();}
}

Qt 汽车仪表 QWidget相关推荐

  1. 【Qt】QWidget类详解(函数篇)

    00. 目录 文章目录 00. 目录 01. 概述 02. Reimplemented Public Functions 03. Public Slots 04. Signals 05. Static ...

  2. Qt之QWidget设置窗口背景图片的几种方法

    Qt之QWidget设置窗口背景图片的几种方法 几种方法如下: 1.使用调色板QPalette来设置图片 QPalette pal =this->palette(); pal.setBrush( ...

  3. Qt 设置 QWidget 背景色

    Qt 设置 QWidget 背景色 简述 QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色. Qt中窗口背景的设置,下面介绍三种方法. 使用QPalette ...

  4. Qt设置QWidget背景色4种方法

    QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色. Qt中窗口背景的设置,下面介绍三种方法. 1.使用QPalette 2.使用Style Sheet 3.绘 ...

  5. QT中QWidget、QDialog及QMainWindow的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...

  6. Qt继承QWidget或者QWidget直接弹出窗口(非模态对话框)(对话框)

    QWidget是Qt中主流的窗口类,实现QWidget窗口弹出主要有三个步骤. 1.1实例一个窗口类对象QWidget *widget = new QWidget(NULL); 1.2调用函数函数QW ...

  7. 【Qt】QWidget对样式表设置边框无效的解决方法

    1.现象 在对QWidget使用样式表时无效 QWidget#MyWgt{border:1px solid gray; } 2.原因 原因是QWidget只支持background.backgroun ...

  8. Qt osg QWidget osgViewer::Viewer

    osgViewer::Viewer* _viewer = nullptr; _viewer = new osgViewer::Viewer; osg::ref_ptr<osg::Group> ...

  9. QT用QWidget做的气泡聊天功能,可发图片、文件、文本等气泡信息,功能简单,适合初学者

    参考网上其他大能的demo,自己写了个比较简单的气泡聊天demo, 可以发图片.文件.文字信息,在气泡信息上有右键菜单复制文本功能,图片可以双击打开,文件可以右键菜单打开文件和打开目录:气泡信息之前有 ...

最新文章

  1. 哪些人适合学习java技术
  2. python语言remove_慎用python的pop和remove方法
  3. android 程序运行不了,当应用程序在后台运行或不运行时,Android – 推送通知工作不正确...
  4. POJ - 1328 Radar Installation(贪心+思维)
  5. 在linux下配置java,在Linux下配置Java开发环境
  6. 前端每日实战:98# 视频演示如何用纯 CSS 创作一只愤怒小鸟中的绿猪
  7. STEP 7 Micro/WIN 指令库下载网址大全s7-200
  8. Golang工程师历年企业笔试真题汇总
  9. CPen 使用 PS_DOT 无法画出虚线
  10. 关于音频EQ、DRC、等响度、3D环绕音、虚拟低音、变音、AEC、AGC、ANS等解释
  11. Python实用工具,pyqt5模块,Python实现自动生成艺术签名的小工具
  12. 基于访客的网络(VBN)
  13. 请教:使用或移植过xprivacy的请进
  14. java提供的对集合操作的常用方法,并集,交集,差集
  15. 怎么搜索一下整个网络的计算机,如何快速查找自己电脑IP地址?
  16. 用C++实现简单的小游戏
  17. 拼多多面试——算法实习面试
  18. R语言自学笔记:回归分析基础
  19. Compose学习笔记1-compose、state、flow、remember
  20. CacheCloud的入门运用与实战

热门文章

  1. [IDE工具篇]提高办公效率的几款软件(持续更新中)
  2. 三级等保测评-服务器设置三权分立
  3. 【T-SQL】〇、 T-SQL语法说明
  4. Spring Boot国际化(i18n)
  5. 在ArcGIS中如何为坐标添加带号?
  6. Ubuntu 设定壁纸自动切换的shell脚本
  7. html去除图片边框颜色,在PS中怎样做,可以将图片去除所有颜色,只留边框(描边)?...
  8. ERP系统是什么?ERP实施顾问怎么做?
  9. [Unity3D]Unity3D游戏开发之仿仙剑奇侠传仙灵岛机关的实现
  10. 【SQL注入漏洞-07】堆叠查询靶场实战