资源简介
通过QPainter实现的汽车仪表盘,可显示当前速度。速度从0-140,希望能帮助到有需要的朋友!
代码片段和文件信息
#include “widget.h“
#include
#include
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
index = 0;
timer = new QTimer(this);
connect(timer SIGNAL(timeout()) this SLOT(timerout()));
timer->start(20);
// slider = new QSlider(this);
// slider->setGeometry(101040020);
// slider->setOrientation(Qt::Horizontal); // 水平方向
// slider->setMinimum(0); // 最小值
// slider->setMaximum(150); // 最大值
// slider->setSingleStep(1); // 步长
// connect(sliderSIGNAL(valueChanged(int))thisSLOT(sliderslot(int)));
}
Widget::~Widget()
{
}
void Widget::sliderslot(int val)
{
index = val;
//++index;
if(index>140)
index=0;
update();
}
void Widget::timerout()
{
++index;
if(index>140)
index=0;
update();
}
QRectF Widget::textRectF(double radius int pointSize double angle)
{
QRectF rectF;
rectF.setX(radius*qCos(angle*M_PI/180.0) - pointSize*2);
rectF.setY(radius*qSin(angle*M_PI/180.0) - pointSize/2.0);
rectF.setWidth(pointSize*4);
rectF.setHeight(pointSize);
return rectF;
}
void Widget::paintEvent(QPaintEvent * event)
{
Q_UNUSED(event);
QFont font(“Arial Rounded MT Bold“);
// 指针形状 - 多边形
static const QPoint secondHand[4] = {
QPoint(7 -12)//Y值控制指针在圆环的位置
QPoint(-7 -12)
QPoint(-1 -95)
QPoint(1 -95)
};
// 指针及其他位置颜色
QColor backgroundColor(94 94 94 255);//圆盘背景颜色
QColor redHandleColor(255 0 0);//指针颜色
QColor secondColor(0 0 0 150);//10步长的刻度颜色 黑
QColor minuteColor(255 255 255 150);//小格的刻度颜色
QColor halfColor(255 255 255 150);//半格的刻度颜色 白
int side = qMin(width() height());
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
// 平移坐标系原点至中心点
painter.translate(width() / 2 height() / 2);
// 缩放 //控制刻度的半径
painter.scale(side / 300.0 side / 300.0);
//绘制背景黑色圆盘 backgroundColor
QPen bgpen;
bgpen.setColor(backgroundColor);
bgpen.setWidth(120);
painter.setPen(bgpen);
painter.drawArc(-40-40808005760);
// 绘制指针
painter.setPen(Qt::NoPen);
painter.setBrush(redHandleColor);
painter.save();
//一共270度,分150格,每一格1.8度
painter.rotate(234+index*1.8);//180+(30*1.8)
painter.drawConvexPolygon(secondHand 4);
painter.restore();
//中心画一个红色圆环
QPen pen;
pen.setColor(QColor(25500));
pen.setWidth(10);
painter.setPen(pen);
painter.drawArc(-10-10202005760);
painter.setPen(secondColor);
// 绘制刻度线 (270度 / 15 = 18度)每大格间距18度
for (int i = 0; i < 20; ++i){
if(i>=3 && i<=7){
}else{
painter.drawLine(88 0 96 0);
}
painter.rotate(18);//按给定角度进行顺时针旋转
}
//设置字体大小
int radius = 95;//数字显示半径值
//QFont font = painter.font();
font.setBold(true);
painter.setFont(font);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4851 2018-08-05 16:48 widget.cpp
----------- --------- ---------- ----- ----
4851 1
- 上一篇:ncurses详细教程
- 下一篇:回溯法专题
相关资源
- qt做的小程序-鼠标事件
-
Qt Remote ob
ject(QtRO)进程间通信De - 基于QT扫雷游戏开发
- 解决QTextEdit右键菜单为英文的问题
- Qt QRCode生成二维码,完整代码可运行
- mqtt前端调用
- Ubuntu系统:为Qt配置ROS开发环境
- QT4编写的简单计算器
- Qt编写的Leds以及蜂鸣器奏乐
- 用Qt控制开发板led和蜂鸣器
- QT下Mingw实现QTtableview中实现添加复选
-
xm
l在Qt中三种方法解析的简单 - Linux下的Socket聊天系统,QT完整界面
- Linux下的QT车牌识别门禁系统基于ope
- 基于QT的方块消除游戏
- QT视频教程高清,用于QT的自学
- qtcreator-4.10.2的designer汉化包.zip
- qt自定义日历
- QML界面小
- qt编写的GPS界面
- ov9650摄像头在qt中的实现代码
- 基于Live555的从多个摄像头实时获取
- QT地图的高德地图插件(Map Plugin)
- 基于qt的视频播放器104396
- QT录音
- 997783QTableWidget表头添加复选框.zip
- qt_multicast.tar.gz
- QT5 雷达扫描效果代码
- QQLogin.ui
- Qt使用QGraphicsView实现滑动窗体效果
评论
共有 条评论