当前位置: 首页 > wzjs >正文

机票特价网站建设商业推广

机票特价网站建设,商业推广,手机管家下载,java编程培训Qt绘制温度计源码分享 一、效果展示二、源码分享三、使用方法 一、效果展示 二、源码分享 .hpp #ifndef THERMOMETERWIDGET_H #define THERMOMETERWIDGET_H#include <QWidget> #include <QPropertyAnimation> #include <QPainter> #include <QTimer>cl…

Qt绘制温度计源码分享

  • 一、效果展示
  • 二、源码分享
  • 三、使用方法

一、效果展示

在这里插入图片描述
在这里插入图片描述

二、源码分享

.hpp

#ifndef THERMOMETERWIDGET_H
#define THERMOMETERWIDGET_H#include <QWidget>
#include <QPropertyAnimation>
#include <QPainter>
#include <QTimer>class ThermometerWidget : public QWidget
{Q_OBJECT
signals:
public:explicit ThermometerWidget(QWidget *parent = nullptr);qreal getValue();void setValue(qreal value);void changeValue(qreal value);
protected:void paintEvent(QPaintEvent *e);
public slots:void startAnimation();
private:void updateRect();
private:qreal m_value;qreal curValue;int m_width;QRectF m_rect;int maxValue, minValue;qreal m_radius;QPropertyAnimation *m_valueAnimation;};#endif // THERMOMETERWIDGET_H

.cpp

#include "thermometerWidget.h"ThermometerWidget::ThermometerWidget(QWidget *parent): QWidget{parent}
{m_width = 20;maxValue = 100;minValue = -20;m_radius = 1.05;m_value = 0;curValue = m_value;QTimer *at = new QTimer(this);at->start(1000);// m_valueAnimation = new QPropertyAnimation(this, "value");// m_valueAnimation->setDuration(1000);// m_valueAnimation->setEasingCurve(QEasingCurve::OutCubic);// m_valueAnimation->setLoopCount(1);connect(at, SIGNAL(timeout()), this, SLOT(startAnimation()));
}qreal ThermometerWidget::getValue()
{return m_value;
}void ThermometerWidget::setValue(qreal value)
{m_value = value;update();
}void ThermometerWidget::changeValue(qreal value)
{if(value > maxValue)value = maxValue;if(value < minValue)value = minValue;curValue = value;
}void ThermometerWidget::paintEvent(QPaintEvent *e)
{updateRect();QPainter painter(this);QPen pen(Qt::black);painter.translate(this->width()/2, this->height()/2);  //坐标轴移动到中心点painter.setRenderHints(QPainter::TextAntialiasing | QPainter::Antialiasing);  // 启用反锯齿painter.save();//绘制上方的柱状painter.fillRect(m_rect, QColor(168,200, 225));//绘制底部的圆QRectF tmpRect = QRectF(m_rect.bottomLeft(), QPointF(m_width, height()/2- m_width*m_radius));painter.fillRect(tmpRect, QColor(255, 0, 0));painter.setPen(Qt::NoPen);painter.setBrush(QColor(255, 0, 0));painter.drawEllipse(tmpRect.bottomLeft()+QPointF(tmpRect.width()/2, 0),m_width*m_radius, m_width*m_radius);painter.restore();//绘制刻度以及刻度值painter.save();painter.setPen(QColor(Qt::black));int nYCount = (maxValue - minValue)/10+1;qreal perHeight = (m_rect.height())/nYCount;for (int i=0; i<nYCount; ++i) {QPointF basePoint = m_rect.bottomLeft() - QPointF(0, perHeight/2) - QPointF(0, perHeight*i);//左侧大刻度painter.drawLine(basePoint, basePoint+QPointF(-10, 0));for (int j=1; j<10; ++j) {if(i == nYCount -1)continue;painter.drawLine(basePoint-QPointF(0, perHeight/10*j),basePoint-QPointF(5, perHeight/10*j));}painter.drawText(basePoint+QPointF(-28, 4), QString("%1").arg(minValue+i*10));//右侧大刻度basePoint = m_rect.bottomRight() - QPointF(0, perHeight/2) - QPointF(0, perHeight*i);painter.drawLine(basePoint, basePoint+QPointF(10, 0));for (int j=1; j<10; ++j) {if(i == nYCount -1)continue;painter.drawLine(basePoint-QPointF(0, perHeight/10*j),basePoint-QPointF(-5, perHeight/10*j));}}painter.restore();//根据值填充m_rectqreal h = (m_value-minValue)/(maxValue-minValue)*(m_rect.height()-perHeight);if(h<0)h = 0;if(h > m_rect.height())h = m_rect.height();painter.fillRect(m_rect.adjusted(0, m_rect.height()-h-perHeight/2-1 , 0, 0), QColor(255, 0, 0));QWidget::paintEvent(e);
}void ThermometerWidget::startAnimation()
{// qreal startValue = getValue();// m_valueAnimation->setKeyValueAt(0, startValue-1);// m_valueAnimation->setKeyValueAt(0.5, curValue+1);// m_valueAnimation->setKeyValueAt(1, curValue);// m_valueAnimation->setStartValue(startValue-2);// m_valueAnimation->start();
}void ThermometerWidget::updateRect()
{m_rect.setX(0);m_rect.setY(20 - height()/2);m_rect.setWidth(m_width);m_rect.setHeight(height() - 40 - m_width* m_radius);
}

三、使用方法

放置一个QWidget提升为这个类,
在这里插入图片描述

http://www.dtcms.com/wzjs/422404.html

相关文章:

  • 黑龙江高端网站建设如何搭建自己的网站
  • 广州信科做网站学校seo推广培训班
  • 网站如何启用gzip压缩青岛seo培训
  • 网站建设公司中心百度投诉中心电话
  • 网站建设公司广告语长沙网络公司排名
  • 易名中国网站网站怎么做到秒收录
  • 商城网站建设多少钱电商营销推广方案
  • 密云网站建设公司灰色行业推广
  • 网站标题栏怎么做成都百度推广公司电话
  • 做网站是用啥软件做的百度云账号登录
  • 佛山网站建设thual百度搜索推广操作简要流程
  • 企业网站建设免费2022年搜索引擎优化指南
  • 高端响应式网站东莞百度快速排名
  • 怎么学网站开发网页优化怎么做
  • 廊坊自助建站定制爬虫搜索引擎
  • 正规的现货交易平台手机优化什么意思
  • seo最强东莞关键词优化平台
  • 公司建站系统开发网站需要多少钱
  • 比较好的微网站开发平台营销型企业网站诊断
  • 营销点子昆明排名优化
  • 镇平哪家网站做的好网络营销网站
  • 河北网站制作公司地址免费网站制作
  • 网站后台管理系统源码google adwords
  • 在网上帮做图片的网站网络服务公司
  • 用linux系统怎么自己建设网站百度电脑版官网入口
  • 凡科网站怎么做友情链接天津疫情最新情况
  • 动态网站开发实训心得体会软文代写自助发稿平台
  • 自己搭建服务器 发布网站 域名如何申请郑州网站运营实力乐云seo
  • 网站信息发布制度建设微博推广怎么做
  • 做pc端网站报价网络营销推广的目的