qt 绘制刻度尺缩放_Qt编写自定义控件1-汽车仪表盘

本文介绍了如何使用Qt的painter绘制汽车仪表盘,强调了自定义控件的优势,如灵活性和可定制性。通过设置范围值、精确度、刻度数量、旋转角度等功能,实现仪表盘的动态效果和颜色自适应。文中展示了控件的核心代码,并提及该控件库包含超过140个精美控件,支持多种Qt版本和编译器,适用于Qt Creator并提供属性设计器,便于设计和使用。
摘要由CSDN通过智能技术生成

前言

汽车仪表盘几乎是qt写仪表盘控件中最常见的,一般来说先要求美工做好设计图,然后设计效果图给到程序员,由程序员根据效果来实现,主要靠贴图,这种方法有个好处就是做出来的效果比较逼真,和真实效果图基本上保持一致,而且程序员也不会那么累,基本上入门级别的程序员都可以搞定,效率比较高,缺点是如果用户需要更改某个部件的颜色,比如指针的颜色等,需要重新做效果图贴图才能实现,比较麻烦,还有一点就是如果效果图原图不是很大,则遇到特殊分辨率情况下,可能会有失真的情况,被强制拉伸等。

我一贯都喜欢用painter来绘制,以规避后面几点的缺点,也可以锻炼下自己的审美能力,所谓心中有坐标,万物皆painter。

实现的功能

  • 1:可设置范围值,支持负数值
  • 2:可设置精确度,最大支持小数点后3位
  • 3:可设置大刻度数量/小刻度数量
  • 4:可设置开始旋转角度/结束旋转角度
  • 5:可设置是否启用动画效果以及动画效果每次移动的步长
  • 6:可设置外圆背景/内圆背景/饼圆三种颜色/刻度尺颜色/文字颜色
  • 7:自适应窗体拉伸,刻度尺和文字自动缩放
  • 8:可自由拓展各种渐变色,各圆的半径
  • 9:三色圆环按照比例设置范围角度 用户可以自由设置三色占用比例
  • 10:圆环样式可选择 三色圆环 当前圆环
  • 11:指示器样式可选择 圆形指示器 指针指示器 圆角指针指示器 三角形指示器

效果图

fe8b61300b06d192c0555bfb0a97782f.gif
206fac2e4878e5f5e7521df044ee7d76.png
7f0e21d90326d4381fc1fc5da269423b.png

核心代码

void GaugeCar::paintEvent(QPaintEvent *){ int width = this->width(); int height = this->height(); int side = qMin(width, height); //绘制准备工作,启用反锯齿,平移坐标轴中心,等比例缩放 QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); painter.translate(width / 2, height / 2); painter.scale(side / 200.0, side / 200.0); //绘制外圆 drawOuterCircle(&painter); //绘制内圆 drawInnerCircle(&painter); //绘制饼圆 drawColorPie(&painter); //绘制覆盖圆 用以遮住饼圆多余部分 drawCoverCircle(&painter); //绘制刻度线 drawScale(&painter); //绘制刻度值 drawScaleNum(&painter); //根据指示器形状绘制指示器 if (pointerStyle == PointerStyle_Circle) { drawPointerCircle(&painter); } else if (pointerStyle == PointerStyle_Indicator
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值