【Qt】 自定义组件_水波进度条

继承露台
• 阅读 2687

组件合集


仓库

【Qt】 自定义组件_水波进度条

特性
  • 可设置范围值
  • 可设置起始角度
  • 可设置水波密度,密度越大浪越大
  • 可设置水波高度,高度越大浪越大
  • 可设置是否显示进度条
  • 可设置是否显示水纹
  • 可设置进度色、水纹色、文字色
  • 可设置进度条前进方向
#ifndef WAREPROGRESSBAR_H
#define WAREPROGRESSBAR_H

#include <QColor>
#include <QString>
#include <QTimer>
#include <QWidget>

/* 多彩仪表盘自定义控件 实现的功能
 * 1. 可设置范围值
 * 2. 可设置起始角度
 * 3. 可设置水波密度,密度越大浪越大
 * 4. 可设置水波高度,高度越大浪越大
 * 5. 可设置是否显示进度条
 * 6. 可设置是否显示水纹
 * 7. 可设置进度色、水纹色、文字色
 * 8. 可设置进度条前进方向
 */

class WareProgressBar : public QWidget
{
    Q_OBJECT

    Q_PROPERTY(QColor  outerCircleColor       READ getPieCircleColor           WRITE setPieCircleColor)
    Q_PROPERTY(QColor  waterColor             READ getwaterColor               WRITE setwaterColor)
    Q_PROPERTY(QColor  textColor              READ getTextColor                WRITE setTextColor)
    Q_PROPERTY(int     pieStartAngle          READ getPieStartAngle            WRITE setPieStartAngle)
    Q_PROPERTY(int     value                  READ getValue                    WRITE setValue)
    Q_PROPERTY(int     maxValue               READ getMaxValue                 WRITE setMaxValue)
    Q_PROPERTY(int     minValue               READ getMinValue                 WRITE setMinValue)
    Q_PROPERTY(int     waveDensity            READ getWaveDensity              WRITE setWaveDensity)
    Q_PROPERTY(int     waveHeight             READ getWaveHeight               WRITE setWaveHeight)
    Q_PROPERTY(QString suffixText             READ getSuffixText               WRITE setSuffixText)
    Q_PROPERTY(bool    waveForwardOrientation READ getWaveIsForwardOrientation WRITE setWaveIsForwardOrientation)
    Q_PROPERTY(bool    waterIsvisible         READ getWaterIsvisible           WRITE setWaterIsvisible)
    Q_PROPERTY(bool    peiCircleIsvisible     READ getPeiCircleIsvisible       WRITE setPeiCircleIsvisible)
    Q_PROPERTY(bool    peiForwardOrientation  READ getPeiIsForwardOrientation  WRITE setPeiIsForwardOrientation)

public:
    explicit WareProgressBar(QWidget *parent = nullptr);
    ~WareProgressBar();

    QColor getPieCircleColor()               const;
    QColor getwaterColor()                   const;
    QColor getTextColor()                    const;
    int getPieStartAngle()                   const;
    int getValue()                           const;
    int getMaxValue()                        const;
    int getMinValue()                        const;
    int getWaveDensity()                     const;
    int getWaveHeight()                      const;
    QString getSuffixText()                  const;
    bool getWaveIsForwardOrientation()       const;
    bool getWaterIsvisible()                 const;
    bool getPeiCircleIsvisible()             const;
    bool getPeiIsForwardOrientation()        const;

public slots:

    void setPieCircleColor(const QColor &color);                // 设置外圆颜色
    void setwaterColor(const QColor &color);                    // 设置水颜色
    void setTextColor(const QColor &color);                     // 设置文本颜色
    void setPieStartAngle(int angle);                           // 设置饼图起始角度
    void setValue(int value);                                   // 设置开始值
    void setRange(int minValue, int maxValue);                  // 设置范围值
    void setMaxValue(int value);                                // 设置最大值
    void setMinValue(int value);                                // 设置最小值
    void setWaveDensity(int density);                           // 设置水波密度 [0 - 10]
    void setWaveHeight(int height);                             // 设置水波高度 [0 - 10]
    void setSuffixText(const QString &text);                    // 设置提示文本
    void setWaveIsForwardOrientation(bool Orientation);         // 设置水波方向 [true 正向; false 反向]
    void setWaterIsvisible(bool visible);                       // 设置水是否可见
    void setPeiCircleIsvisible(bool visible);                   // 设置圆饼否可见
    void setPeiIsForwardOrientation(bool Orientation);          // 设置圆饼前进方向

protected:
    void paintEvent(QPaintEvent *event) override;
    void drawPieCircel(QPainter *painter);
    void drawBackground(QPainter *painter);
    void drawWater(QPainter *painter);
    void drawText(QPainter *painter);

private:
    double m_radius               = 0.0;

    QColor m_peiCircleColor       = QColor(100,184,255);
    QColor m_waterColor           = QColor(100,184,255);
    QColor m_textColor            = QColor(250,250,250);
    int m_pieStartAngle           = 0;
    int m_value                   = 0;
    int m_maxValue                = 100;
    int m_minValue                = 0;
    int m_waveDensity             = 1;
    int m_waveHeight              = 5;
    bool m_waveForwardOrientation = true;
    QString m_suffixText          = "%";
    bool m_waterIsvisible         = true;
    bool m_peiCircleIsvisible     = true;
    bool m_peiForwardOrientation  = true;

    double m_offset               = 50;
    QTimer m_timer;
};

#endif // WAREPROGRESSBAR_H
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
11个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Qt5安装及组件选择(Qt 5.12.0)
组件选择如下图所示,安装Qt时有选择组件这一步,全部安装未免太占磁盘控件,只需安装我们所需要的组件即可。接下来就分析分析各个组件的作用及含义。!(https://oscimg.oschina.net/oscnet/f428e1aad0ebfcc43108b36f5f67a03de85.png)“Qt5.12.0”节点下面是Qt
Easter79 Easter79
3年前
Taro小程序自定义顶部导航栏
微信自带的顶部导航栏是无法支持自定义icon和增加元素的,在开发小程序的时候自带的根本满足不了需求,分享一个封装好的组件,支持自定义icon、扩展dom,适配安卓、ios、h5,全面屏。我用的是京东的Taro多端编译框架写的小程序,原生的也可以适用,用到的微信/taro的api做调整就行,实现效果如下。!在这里插入图片描述(https://i
Stella981 Stella981
3年前
Nginx + lua +[memcached,redis]
精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用
Stella981 Stella981
3年前
AS Library 使用NDK 的一些坑 Unable to strip library (+深入了解部分gradle机制)
转自: https://www.twblogs.net/a/5c53f1d5bd9eee06ee217e42(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.twblogs.net%2Fa%2F5c53f1d5bd9eee06ee217e42)和https://fuckn
Wesley13 Wesley13
3年前
HTTP面试题(二):HTTP请求报文和响应报文格式
!(https://oscimg.oschina.net/oscnet/0406894fb1274bee91fc53c84c516576.jpg)看都看了还不点个赞!(https://oscimg.oschina.net/oscnet/095d444dc9a449ee85afd19b00fdf52b.png)!(h
Stella981 Stella981
3年前
Duang,HUAWEI DevEco IDE全面升级啦
想感受全新UI带来的视觉及交互体验、HiKey970开发板调测、HiAIAPI推荐和收藏、深度AI模型分析等新功能,体验高清晰度和流畅度的远程AI真机调测吗?!(https://oscimg.oschina.net/oscnet/f4e1bb24ff00b8c6ea27f75370a53bfbacd.jpg)全新的UI设计
Wesley13 Wesley13
3年前
.Net Framework4.0下载安装
.NETFramework4是支持生成和运行下一代应用程序和XMLWebServices的内部Windows组件,很多基于此架构的程序需要它的支持才能够运行.—百科.NetFramework4.0下载:链接:https://pan.baidu.com/s/1U\_P53WJlZ2sIP4se3AUEpw提取码:9wx4
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(