日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Qt 汽车仪表 QWidget

發(fā)布時(shí)間:2024/3/24 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 汽车仪表 QWidget 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天是2016年的最后一個(gè)工作日,在這個(gè)最后工作日里面,和以為網(wǎng)友要了一點(diǎn)練手的素材文件,經(jīng)過(guò)網(wǎng)友確認(rèn),不涉及商業(yè)機(jī)密,在這里分享一下,如侵權(quán),請(qǐng)聯(lián)系我刪除、

?

先上程序運(yùn)行圖

?

?

?

這里顯示數(shù)字,閃爍等都沒(méi)有問(wèn)題,唯一的問(wèn)題就是這個(gè)速度指針的繪制問(wèn)題,在代碼中我使用的是用QPainter繪制image。鋸齒好嚴(yán)重,這里我已經(jīng)開了抗鋸齒

?

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

但是效果幾乎沒(méi)有,是操作不對(duì),還是需要特殊設(shè)置了

?

?

剩下的就是分享代碼了

?

首先就是這個(gè)指針的繪制代碼

?

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

?

?

?

?

?

這里主要就是設(shè)置大背景,就是后面的那么最大的儀表界面,剩下的就是為這個(gè)要在Qlabel上面繪制指針,需要為QLabel注冊(cè)繪制事件,否則程序會(huì)濾掉這個(gè)繪制事件

?

繪制指針代碼

?

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

?

設(shè)置開抗鋸齒,幾乎沒(méi)有效果,我都懷疑執(zhí)行了沒(méi)有

?

移動(dòng)Qpainter 的原始坐標(biāo)點(diǎn)

?

完了就是簡(jiǎn)單的繪制 ,?

?

剩下的就是數(shù)字儀表的顯示

?

這里我新建了一個(gè)專門顯示數(shù)字的界面

這個(gè)幾面來(lái)負(fù)責(zé)顯示七位數(shù)字

?

數(shù)字顯示源代碼:

?

頭文件

?

?

#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;} }

?

?

?

?

?

?

?


這里代碼開著有點(diǎn)多,其實(shí)沒(méi)有什么含量,說(shuō)白了就是給七個(gè)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個(gè)界面實(shí)例,

?

?

?

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(); }

?


在這里來(lái)刷新指針和刷新數(shù)字界面的顯示

?

?

?

?

大家可能看到圖中有的界面是有那個(gè)沒(méi)有系安全帶的圖標(biāo),有的有,這里是實(shí)現(xiàn)了一個(gè)1Hz的圖標(biāo)閃爍,其實(shí)原理很簡(jiǎn)單,就是QLabel的隱藏,顯示,再隱藏,再顯示。。。

?

實(shí)現(xiàn)代碼:

?

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

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的Qt 汽车仪表 QWidget的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。