Qt绘制记分牌控件

效果图
在这里插入图片描述
记分牌控件头文件

#ifndef QWHSCOREBOARD_H
#define QWHSCOREBOARD_H

/*
 * 记分牌控件,可单独使用
 */ 

#include <QWidget>
#include <QPaintEvent>
#include <QPainter>
#include <QPropertyAnimation>
#include <QResizeEvent>

class QWHScoreBoard : public QWidget
{
    Q_OBJECT
    Q_PROPERTY(float m_offsetY READ offsetY WRITE setOffsetY)
public:
    explicit QWHScoreBoard(QWidget *parent = nullptr);
    ~QWHScoreBoard();

public:
    //设置文本列表
    void setTexts(const QStringList &texts);
    //设置当前显示的文本
    void setCurText(const QString &curText);
    //设置需要显示的文本
    void setTargetText(const QString &text);
    //设置单个文本滚动时间
    void setInternal(int msecs);
    //设置文本颜色
    void setTextColor(const QColor &color);
    //设置边框颜色
    void setBorderColor(const QColor &color);
    //设置背景颜色
    void setBgColor(const QBrush &color);
    //开始滚动
    void start(int internal = -1);
    //停止滚动
    void stop();

    //获取文本列表
    QStringList texts()     const;
    //获取当前显示的文本
    QString curText()       const;
    //获取需要显示的文本
    QString targetText()    const;
    //获取单个文本滚动时间
    int internal()          const;
    //获取文本颜色
    QColor textColor()      const;
    //获取边框颜色
    QColor borderColor()    const;
    //获取背景颜色
    QBrush bgColor()        const;

protected:
    void paintEvent(QPaintEvent *event);
    void resizeEvent(QResizeEvent *event);

private:
    void setOffsetY(float offsetY);
    float offsetY() const;

private slots:
    void onFinished();

signals:
    //当前文本改变时,发送信号
    void currentValueChanged(const QString value);

private:
    bool m_isStart;                     //是否启动
    float m_offsetY;                    //Y偏移量
    int m_internal;                     //单文本切换间隔
    int m_curIndex;                     //当前文本索引
    int m_nextIndex;                    //下一个显示文本索引
    int m_targetIndex;                  //目标文本索引
    QStringList m_texts;                //可显示文本列表
    QColor m_textColor;                 //文本颜色
    QColor m_borderColor;               //边框颜色
    QBrush m_bgColor;                   //背景颜色
    QPropertyAnimation *m_animation;    //属性动画
};

#endif // QWHSCOREBOARD_H

记分牌面板控件头文件

#ifndef QWHSCOREBOARDPANEL_H
#define QWHSCOREBOARDPANEL_H

/*
 * 记分牌面板控件,与记分牌控件组合使用
 */ 
#include "qwhscoreboard.h"
#include <QWidget>

class QWHScoreBoardPanel : public QObject
{
    Q_OBJECT
public:
    explicit QWHScoreBoardPanel(QObject *parent = nullptr);
    ~QWHScoreBoardPanel();

public:
    //添加记分牌控件
    void addScoreBoard(QWHScoreBoard *scoreBoard);
    //设置需要显示的最终文本
    void setTargetText(const QStringList &text);
    //设置单个文本滚动时间
    void setInternal(int msecs);
    //启动
    void start(int internal = -1);
    //停止
    void stop();

    //获取记分牌控件
    QList<QWHScoreBoard *> scoreBoards()    const;
    //获取需要显示的最终文本
    QStringList text()  const;
    //获取单个文本滚动时间
    int internal()      const;

signals:
    void currentValueChanged(QString value);

public slots:
    void onCurrentValueChanged(QString value);

private:
    int m_internal;                         //单文本切换间隔
    QStringList m_text;                     //目标文本
    QList<QWHScoreBoard *> m_scoreBoards;   //存储记分牌控件
    QVector<QString> m_curText;             //存储当前所有记分牌控件的值
};

#endif // QWHSCOREBOARDPANEL_H
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生卍流年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值