Qt 汽车仪表 QWidget
今天是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相关推荐
- 【Qt】QWidget类详解(函数篇)
00. 目录 文章目录 00. 目录 01. 概述 02. Reimplemented Public Functions 03. Public Slots 04. Signals 05. Static ...
- Qt之QWidget设置窗口背景图片的几种方法
Qt之QWidget设置窗口背景图片的几种方法 几种方法如下: 1.使用调色板QPalette来设置图片 QPalette pal =this->palette(); pal.setBrush( ...
- Qt 设置 QWidget 背景色
Qt 设置 QWidget 背景色 简述 QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色. Qt中窗口背景的设置,下面介绍三种方法. 使用QPalette ...
- Qt设置QWidget背景色4种方法
QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色. Qt中窗口背景的设置,下面介绍三种方法. 1.使用QPalette 2.使用Style Sheet 3.绘 ...
- QT中QWidget、QDialog及QMainWindow的区别
QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...
- Qt继承QWidget或者QWidget直接弹出窗口(非模态对话框)(对话框)
QWidget是Qt中主流的窗口类,实现QWidget窗口弹出主要有三个步骤. 1.1实例一个窗口类对象QWidget *widget = new QWidget(NULL); 1.2调用函数函数QW ...
- 【Qt】QWidget对样式表设置边框无效的解决方法
1.现象 在对QWidget使用样式表时无效 QWidget#MyWgt{border:1px solid gray; } 2.原因 原因是QWidget只支持background.backgroun ...
- Qt osg QWidget osgViewer::Viewer
osgViewer::Viewer* _viewer = nullptr; _viewer = new osgViewer::Viewer; osg::ref_ptr<osg::Group> ...
- QT用QWidget做的气泡聊天功能,可发图片、文件、文本等气泡信息,功能简单,适合初学者
参考网上其他大能的demo,自己写了个比较简单的气泡聊天demo, 可以发图片.文件.文字信息,在气泡信息上有右键菜单复制文本功能,图片可以双击打开,文件可以右键菜单打开文件和打开目录:气泡信息之前有 ...
最新文章
- 哪些人适合学习java技术
- python语言remove_慎用python的pop和remove方法
- android 程序运行不了,当应用程序在后台运行或不运行时,Android – 推送通知工作不正确...
- POJ - 1328 Radar Installation(贪心+思维)
- 在linux下配置java,在Linux下配置Java开发环境
- 前端每日实战:98# 视频演示如何用纯 CSS 创作一只愤怒小鸟中的绿猪
- STEP 7 Micro/WIN 指令库下载网址大全s7-200
- Golang工程师历年企业笔试真题汇总
- CPen 使用 PS_DOT 无法画出虚线
- 关于音频EQ、DRC、等响度、3D环绕音、虚拟低音、变音、AEC、AGC、ANS等解释
- Python实用工具,pyqt5模块,Python实现自动生成艺术签名的小工具
- 基于访客的网络(VBN)
- 请教:使用或移植过xprivacy的请进
- java提供的对集合操作的常用方法,并集,交集,差集
- 怎么搜索一下整个网络的计算机,如何快速查找自己电脑IP地址?
- 用C++实现简单的小游戏
- 拼多多面试——算法实习面试
- R语言自学笔记:回归分析基础
- Compose学习笔记1-compose、state、flow、remember
- CacheCloud的入门运用与实战
热门文章
- [IDE工具篇]提高办公效率的几款软件(持续更新中)
- 三级等保测评-服务器设置三权分立
- 【T-SQL】〇、 T-SQL语法说明
- Spring Boot国际化(i18n)
- 在ArcGIS中如何为坐标添加带号?
- Ubuntu 设定壁纸自动切换的shell脚本
- html去除图片边框颜色,在PS中怎样做,可以将图片去除所有颜色,只留边框(描边)?...
- ERP系统是什么?ERP实施顾问怎么做?
- [Unity3D]Unity3D游戏开发之仿仙剑奇侠传仙灵岛机关的实现
- 【SQL注入漏洞-07】堆叠查询靶场实战