QT实现简单的音乐播放器

音乐播放器

实现效果

在这里插入图片描述

代码

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QHBoxLayout>//水平布局
#include <QVBoxLayout>//垂直布局
#include <QVideoWidget>
#include <QMediaPlayer>
#include <QPushButton>
#include <QSlider> //进度条
#include <QComboBox>
#include <QListWidget> //显示所有歌曲
#include <QLabel>
#include <QTimer>
namespace Ui {
   
   
class Widget;
}

class Widget : public QWidget
{
   
   
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();
public slots:
    void openFile();//打开并选择文件
    void playSong();//暂停/播放
    void doubleClickPlay(QListWidgetItem *item);//双击选歌
    void setTimeSlider(qint64 duration); //设置进度条范围
    void updateTimeSlider(qint64 position); //进度条变化
    void updateTime_NameShow();//显示名字及时间变化
    void updateSingPos(int positoin);//更新歌曲进度条
    void updateVolume(int positoin);//更新音量
    void pre();//上一首
    void next();//下一首
private:
    Ui::Widget *ui;
    QMediaPlayer *mediaPlayer; //媒体播放
    QVBoxLayout *vbox; //整体的垂直布局
    QHBoxLayout *hbox1;//按钮水平布局
    QHBoxLayout *hbox2;//标签水平布局
    QHBoxLayout *hbox3;//进度条水平布局
    QPushButton *openBtn; //打开文件
    QPushButton *upBtn; //上一首
    QPushButton *downBtn;//下一首
    QPushButton *playBtn;//播放/暂停
    QComboBox *comboBox;//存放播放顺序 //下拉框
    QSlider *volumeSlider;//进度条
    QSlider *timeSlider;
    QListWidget *listWidget; //显示所有文件的窗口
    QLabel *label; //显示播放时间/总时间
    QLabel *labName;

    int n;
    QString singName;
    QTimer *timer;
    QStringList nameList; //存放所有的文件,依靠下标寻找位置
    int index;//下标
};

#endif // WIDGET_H

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QTime>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
   
   
    ui->setupUi(this);
    //先进行布局
    //先实例化两种布局
    this->vbox = new QVBoxLayout(this); //垂直布局
    this->setLayout(this->vbox);//设置整个窗口为垂直布局
    this->hbox1 = new QHBoxLayout(this); //按钮层水平布局
    this->hbox2 = new QHBoxLayout(this);//标签层水平布局
    this->hbox3 = new QHBoxLayout(this);//进度条布局
    //实例化对象、从上到下依次为媒体播放、listWidget、label、进度条、各种按钮
    this->mediaPlayer = new QMediaPlayer(this);

    this->listWidget = new QListWidget(this); //创建结构简单的列表


    this->label = new QLabel("00:00/00:00",this); //标签栏
    this->labName = new 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值