• 大小: 22KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: qt  温度计  

资源简介

使用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

评论

共有 条评论