Qt(C++) 绘制指针仪表盘显示当前温度
一、功能介绍
当前文章要实现的功能:
使用 Qt 绘制一个仪表盘,用来显示当前的温度,绘制刻度、绘制数字、绘制温度指针。仪表盘全程使用 QPainter 进行绘制,QPainter 是 Qt 框架中非常重要的一个类,绘制功能的实现离不开它。如果想要使用 Qt 进行高质量的绘图或 UI 设计,必须掌握 QPainter 的使用方法。
QPainter 的简介:
QPainter 是 Qt 里用于绘制图形的类,提供了各种绘制函数,可以绘制几何图形、文本、图片等等。QPainter 所绘制的图形可以在 QWidget 及其子类的 paintEvent()事件中使用,也可以在 QPixmap 等其他对象中进行绘制。
QPainter 的大致使用流程如下:
温度仪表盘最终绘制出的效果--带数字刻度:
![](https://static001.geekbang.org/infoq/f6/f669b537a71a3a6173a2d132ade43b73.png)
![](https://static001.geekbang.org/infoq/2b/2bc926088efc2f073450bfccf0e0f58a.png)
无数字刻度效果:
![](https://static001.geekbang.org/infoq/ab/ab7c17ed8a9be2aae8c8b8126ca2f8f4.png)
二、代码设计过程
【1】定义一个自定义控件 my_DrawDashboard,继承 QWidget 类
【2】在 my_DrawDashboard 的构造函数中初始化温度及其他属性值
【3】在 my_DrawDashboard 中实现 paintEvent()函数,绘制仪表盘
【4】在 my_DrawDashboard 中提供一个 setTemperature()函数,用于更新当前温度并触发 temperatureChanged 信号
【5】使用 QTimer 来模拟温度的变化,并实时更新仪表盘的显示
上面代码中,在主窗口中创建了一个 my_DrawDashboard 控件,使用 QTimer 对象来模拟温度的变化。每隔 1 秒钟生成一个随机的温度值,调用 my_DrawDashboard 的 setTemperature()函数来更新当前温度,并实时更新仪表盘的显示。
三、完整的工程
【1】my_DrawDashboard.cpp
【2】my_DrawDashboard.h
【3】设计 UI 界面
在主窗口上,拖拽一个 QWidget 控件,提升为my_DrawDashboard
类型。
![](https://static001.geekbang.org/infoq/f9/f9db23eaa39d4af5d24af9ca7a60920d.png)
![](https://static001.geekbang.org/infoq/fa/fa36ca7e35ad7fa5fd1db6bf2aeb4078.png)
版权声明: 本文为 InfoQ 作者【DS小龙哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/a85b8cee9b34bab3fb45792c8】。文章转载请联系作者。
评论