資源簡介
使用qt5做的溫度計小程序,可實現(xiàn)自己通過滾動條調(diào)節(jié)溫度

代碼片段和文件信息
#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模塊做的立方體程序
評論
共有 條評論