资源简介
使用qt5做的温度计小程序,可实现自己通过滚动条调节温度
代码片段和文件信息
#include “qcw_thermometer.h“
#include
QcwThermometer::QcwThermometer(QWidget *parent): QWidget(parent)
{
m_value = 0;
m_minValue = -30;
m_maxValue = 70;
m_thresholdUp = -20;
m_thresholdDown = 50;
m_thresholdFlag = false;
m_units = QString::fromUtf8(“°C“ -1);
m_scaleMajor = 10;
m_scaleMinor = 5;
m_borderColor = Qt::blue;
m_foreground = Qt::white;
m_background = QColor(41 137 254);
m_liquidColor = Qt::red;
resize(50 500);
}
void QcwThermometer::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing); /* 使用反锯齿(如果可用) */
painter.translate(width() / 2 height() / 2); /* 坐标变换为窗体中心 */
int side = qMin(width() height());
painter.scale(side / 200.0 side / 200.0); /* 比例缩放 */
painter.setPen(Qt::NoPen);
int nSteps = m_scaleMajor * m_scaleMinor;
double step = 400.0 / nSteps;
QFont font = this->font();
/* 绘制边框 */
painter.save();
painter.setPen(QPen(m_borderColor 4));
painter.drawRect(-95 -245 190 490);
painter.restore();
/* 绘制背景 */
painter.save();
painter.setBrush(m_background);
painter.drawRect(-90 -240 180 480);
painter.restore();
/* 绘制液体容器圆 */
painter.save();
painter.setBrush(m_foreground);
painter.drawEllipse(-50 230 40 -40);
painter.restore();
/* 绘制液体容器柱 */
painter.save();
painter.setBrush(m_foreground);
painter.drawRect(-40 210 20 -440);
painter.restore();
/* 绘制单位 */
painter.save();
painter.setPen(m_foreground);
font.setPointSize(18);
painter.setFont(font);
painter.drawText(15 220 m_units);
painter.restore();
/* 绘制刻度线 */
painter.save();
QPen pen(m_foreground);
for (int i = 0 y = 180.0; i <= nSteps; i++ y -= step)
{
if (i % m_scaleMinor == 0)
{
pen.setWidth(2);
painter.setPen(pen);
painter.drawLine(-20 y 0 y);
}
else
{
pen.setWidth(1);
painter.setPen(pen);
painter.drawLine(-20 y -10 y);
}
}
painter.restore();
/* 绘制刻度值 */
painter.save();
painter.setPen(m_foreground);
double tmpVal;
step = 400.0 / m_scaleMajor;
for (int i = 0 y = 185.0; i <= m_scaleMajor; i++ y -= step)
{
tmpVal = 1.0 * i *((m_maxValue - m_minValue) / m_scaleMajor) + m_minValue;
painter.drawText(5 y QString( “%1“ ).arg(tmpVal));
}
painter.restore();
/* 绘制液体圆 */
painter.save();
painter.setBrush(m_liquidColor);
painter.drawEllipse(-45 225 30 -30);
painter.restore();
/* 绘制液体柱(指示) */
painter.save();
painter.setBrush(m_liquidColor);
double val = 400.0 /(m_maxValue - m_minValue)*(m_value - m_minValue);
painter.drawRect(-35 205 10 -val - 25);
painter
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1292 2018-11-21 14:52 bar.pro
文件 5060 2018-11-21 14:54 cthermometer.cpp
文件 2619 2018-11-21 14:51 cthermometer.h
文件 183 2018-11-21 13:59 main.cpp
文件 340 2018-11-21 16:31 mainwindow.cpp
文件 392 2018-11-21 16:31 mainwindow.h
文件 3854 2018-11-21 16:32 mainwindow.ui
文件 2145 2018-11-21 17:50 qcw_thermometer.cpp
文件 549 2018-11-21 16:53 qcw_thermometer.h
文件 9055 2018-11-21 17:22 程序截图.png
文件 5722 2018-11-21 17:24 程序截图2.png
文件 5721 2018-11-21 17:24 程序截图3.png
- 上一篇:QT计算器界面的ui文件
- 下一篇:QT使用openglES模块做的立方体程序
相关资源
- QT使用openglES模块做的立方体程序
- QT计算器界面的ui文件
- qt界面跳转切换
- QT个税计算器
- Qt 按钮收缩,点击show按钮,在按钮后
- 基于Qt实现音频播放器
- Qt编写的串口收发数据小程序源码
- 基于qrencode4.0.0 库和QT环境 实现QR 二维
- 2048源码qt4
- Qt下tcp和udp的编程
- Qt自动补全
- Qt电子时钟
- qttcpsocket传送结构体
- QT5.7+OPENGL画正方体
- Qt Flat样式的各种控件
- 基于AT89S52单片机的数字温度计
- Qt qml ListViewEx 下拉刷新上拉分页
- Qt qml pageview
- qt实现简单异步日志系统
- 开源QT串口调试助手
- 基于Qt的window service服务封装
- QT数据库的操作
- QT串口编程库--qextserialport-1.2win-alpha
- ubuntu 12.04 +Qt+opencv采集、显示视频并拍
- 移动onenet 基于arduino IDE 的mqtt连接
- QT编写的局域网聊天工具仿飞秋
- ARM开发板QT编写的虚拟全键盘
- source.zip
- 基于Qt的多线程工具
- 数字信号处理库Aquila编译及使用说明
评论
共有 条评论