Qt模仿酷狗音乐的播放图标

手机酷狗音乐在播放的时候,中间有一个旋转图标,显示播放进度,如下所示。在这里插入图片描述
Qt模仿酷狗音乐的播放图标效果图:
在这里插入图片描述
头文件

#ifndef QWHKUGOUMUSICLABEL_H
#define QWHKUGOUMUSICLABEL_H

/*
 * 模仿酷狗音乐的音乐播放图标
 * 支持缩放
 */

#include <QWidget>
#include <QPainter>
#include <QPropertyAnimation>
#include <QTimer>
#include <QPixmap>

class QWHKuGouMusicLabel : public QWidget
{
    Q_OBJECT
    Q_ENUMS(State)
    Q_PROPERTY(int m_rotate READ getRotate WRITE setRotate)
public:
    enum State
    {
        Stopped,    //停止
        Paused,     //暂停
        Running,    //运行
    };

    explicit QWHKuGouMusicLabel(QWidget *parent = nullptr);
    ~QWHKuGouMusicLabel();

public:
    //设置音乐时长
    void setMusicDuration(int secs);
    //设置背景图片旋转周期
    void setBgPixmapDuration(int secs);
    //设置每多少毫秒进度条更新一次进度
    void setBarInterval(int msecs);
    //设置当前音乐毫秒数
    void setCurMusicSecs(int msecs);
    //设置背景边缘宽度百分比(0-100)
    void setBorderWidth(int borderWidth);
    //设置背景图片当前旋转角度
    void setRotate(int rotate);
    //设置背景图片
    void setBgPixmap(const QPixmap &pixmap);
    //设置背景边缘颜色
    void setBorderColor(QColor borderColor);
    //设置背景图片底色
    void setBgColor(QColor bgColor);
    //设置进度条颜色
    void setBarColor(QColor barColor);
    //设置进度条圆圈颜色
    void setCircleColor(QColor circleColor);

    //获取音乐时长
    int getMusicDuration()      const;
    //获取背景图片旋转周期
    int getBgPixmapDuration()   const;
    //获取进度条更新频率(每多少毫秒更新一次进度)
    int getBarInterval()        const;
    //获取当前音乐毫秒数
    int getCurMusicSecs()       const;
    //获取背景边缘宽度百分比(0-100)
    int getBorderWidth()        const;
    //获取背景图片角度
    int getRotate()             const;
    //获取背景图片
    QPixmap getBgPixmap()       const;
    //获取背景边缘颜色
    QColor getBorderColor()     const;
    //获取背景图片底色
    QColor gtBgColor()          const;
    //获取进度条颜色
    QColor getBarColor()        const;
    //获取进度条圆圈颜色
    QColor getCircleColor()     const;

    //开始音乐动画
    void start();
    //暂停音乐动画
    void pause();
    //继续音乐动画
    void resume();
    //停止音乐动画
    void stop();

protected:
    void paintEvent(QPaintEvent *event);
    //绘制背景
    void drawBackground(QPainter *painter);
    //绘制进度条
    void drawProgressBar(QPainter *painter);
    //绘制进度条圆圈
    void drawProgressBarCircle(QPainter *painter);

private:
    //角度转弧度
    double degreeToRadius(double degree);

signals:
    //状态改变时发送信号
    void stateChanged(State state);

private slots:
    void onTimeOut();

private:
    int m_musicDuration;                //音乐时长
    int m_pixmapDuration;               //背景图片旋转周期
    int m_barInterval;                  //每几秒进度条更新一次进度

    int m_curMusicSecs;                 //当前音乐毫秒数
    int m_borderWidth;                  //背景边缘宽度,百分比
    int m_rotate;                       //背景图片当前旋转角度
    QPixmap m_pixmap;                   //背景图片

    QColor m_borderColor;               //背景边缘颜色
    QColor m_bgColor;                   //背景图片底色
    QColor m_barColor;                  //进度条颜色
    QColor m_circleColor;               //进度条圆圈颜色

    QPropertyAnimation *m_animation;    //属性动画,旋转背景图片
    QTimer *m_timer;                    //定时器,更新进度条
};

#endif // QWHKUGOUMUSICLABEL_H
### 回答1: 酷狗音乐播放器是基于qt框架开发的一款音乐播放软件。它界面美观、易用,支持各种音频格式的播放,包括MP3、FLAK、WMA等,并可在线播放网络收音机和音乐。 该播放器采用Qt提供的QMediaPlayer模块实现了音频播放功能,能够播放媒体文件、网络流和音频CD等多种形式。同时,还可通过QMultimedia模块实现音频采集、基本音效处理和视频播放等功能。 除基本播放功能外,酷狗音乐播放器还支持多语言、音效调节、循环播放、快捷键等特色功能,并且用户可自定义界面布局和皮肤。同时,酷狗音乐播放器还支持在线播放歌曲、MV、KTV等资源,满足用户对音乐的不同需求。 总之,基于qt酷狗音乐播放器不仅拥有丰富的音频播放功能,同时还能够提供用户自定义、多样化的操作和界面体验,是一款优秀的音乐播放软件。 ### 回答2: 基于Qt酷狗音乐播放器是一款功能强大、界面美观并且易于使用的音乐播放软件。Qt是一套跨平台的C++图形用户界面开发框架,可以同时支持Windows、Mac OS和Linux等多个操作系统。这意味着酷狗音乐播放器可以在不同的操作系统上都能够正常运行。 酷狗音乐播放器集成了丰富的音乐资源,用户可以通过搜索或者分类浏览的方式来寻找自己喜欢的音乐、专辑或者歌手。同时,它还支持歌词显示、锁屏歌词、自动匹配歌词,让用户可以更好地享受音乐。 此外,酷狗音乐播放器还具备强大的音效处理功能,用户可以通过自定义均衡器、立体声、增强等音效,将音乐播放效果发挥到极致。同时,它还支持多种音频格式,包括MP3、WMA、FLAC、APE等,保证了音乐的兼容性和播放质量。 用户可以通过多种方式管理自己的音乐库,包括通过文件夹导入、iTunes库导入和手动添加等。此外,还具备快捷键、手势操作等方便的控制方式,让用户可以自由切换音乐、音效和播放器设置等。 总之,基于Qt酷狗音乐播放器是一款完善的音乐播放软件,不仅具备良好的用户体验,而且能够满足不同用户的需求。无论是听歌还是管理音乐库,都能够让用户得到全面的满足。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

浮生卍流年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值