Qt——自定义控件温度计

QPainter实现一个温度计,如下图所示:

gif如下所示:

1.代码实现原理

首先实现一个外圆框,效果如下所示:

外圆框代码如下所示:

cpp 复制代码
void TempUI::drawControlBackColor(QPainter& paint)
{
    paint.save();

    int dy1 = (height() - _realHeight)/2;
    paint.translate(width()/2, height() - dy1 -_bootomCircleRadius);
    paint.setBrush(Qt::white);
    paint.drawEllipse(QPointF(0, 0), _bootomCircleRadius, _bootomCircleRadius);

    paint.drawRect(-_topProgressBarWidth/2, -_bootomCircleRadius-_topProgressBarHeight
                   , _topProgressBarWidth, _topProgressBarHeight + _bootomCircleRadius*0.3);


    paint.restore();
}

实现好后就可以在该外圆框下叠加绘图,这样就可以实现一个多色的温度计控。

2.控件示例实现

提供了一个setRange(int value, int min, int max)函数,可以设置温度计的最小值和最大值,当前值:

cpp 复制代码
TempUI::setRange(int value, int min, int max, int scaleTextCnt = 11);

比如设置:

cpp 复制代码
setRange(50 , -50 , 50, 11);        // 当前值50, 范围-50~50,刻度文本数量11

效果如下所示:

相关推荐
Escalating_xu2 小时前
【C 语言】编译和链接:从源文件、目标文件到可执行程序完整解析
c语言·开发语言
Liuqy-052 小时前
线程的互斥与同步机制——互斥锁、条件变量、无名信号量
linux·开发语言·线程·进程·条件变量·同步·互斥
geats人山人海2 小时前
java 7异常
android·java·开发语言
Pniubi3 小时前
分片的意义?
java·开发语言
阿皮 API3 小时前
Shopee虾皮商品详情API接口调用实战:Python获取东南亚商品数据与JSON解析
开发语言·python·json
niucloud-admin3 小时前
NIUCLOUD LITE AI开发文档--系统部署
开发语言·ai
多弗朗皮卡丘3 小时前
C++异常
开发语言·c++·异常
mengzhi啊3 小时前
把数据存入sql数据库。qt,c++。
数据库·sql·qt
米糕闯编程3 小时前
鱼香ros2(十七)C++小海龟巡逻
开发语言·c++·机器人·ros2·服务·小海龟
郝学胜-神的一滴4 小时前
NumPy深度解析|Python数值计算的基石,告别低效for循环
开发语言·人工智能·python·程序人生·numpy·量化投资