QT实现简单音乐播放器

2020-06-30 19:00:37丽君

基于QT实现一个多功能媒体播放器,它能播放音频(如mp3),视频
媒体播放器界面,有进度条,可展示总播放时间、当前播放时间,进度条可拖动,有播放、暂停键,有快进、快退键,上一曲下一曲,静音,调节音量,双击播放歌曲,以及简单的歌词同步。
主界面如下:

创建三个本地文件夹分别存放MV,歌词和音乐文件




工程结构目录如下(整个结构没有设计好,所以每个视频都要单独创建文件):

mainwindow.h代码如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QMediaPlayer>
#include <QStringList>
#include <QDir>
#include <QTime>
#include <QTimer>
#include<videoplayer.h>
#include<videoplayer_qr.h>
#include<videoplayer_cq.h>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
  Q_OBJECT

public:
  MainWindow(QWidget *parent = nullptr);
  ~MainWindow();

private:
  Ui::MainWindow *ui;
  VideoPlayer *v1;
  videoplayer_qr *v_qr;
  videoplayer_cq *v_cq;

  bool isPlay=false;
  bool ismute=false;
  QString MusicPath="C:Users44637MusicQTMusic";
  QString LrcPath="C:Users44637MusicQTLrc";

  QStringList fileList;  //文件名称
  QStringList lrcList;
  QMediaPlaylist *PlayerList;
  QMediaPlayer *Player;
  int  moved;
  int iCount=0;
  QTimer *timer2;
  QMap<int, QString> map;
  QMap<QString, QString> *map2;
  void getHeader(const char *str, QString &des);
  void getTime(QString line);//改动二


private slots:
  void init();//初始化
  void addItem(QString name); //把歌名添加到musicname上
  QStringList getFileNames(const QString &path); //获取路径下所有文件名
   QStringList getLrcNames(const QString &path); //获取路径下所有文件名
  void slotButtonStart();//播放
  void slotButtonLast();//上一首
  void slotButtonNext();//下一首
  void slotShowCurrentMusic();//显示当前播放的歌曲
  void volumChange(int);//控制音量
  void positionChange(qint64 position);//进度条随着音乐播放变化
  void seekChange(int position); //滑动滑动条快进、倒退音乐,且音乐已播放时长也跟着变化
  void musicTime();//歌曲总时间
  void slotShowCurrentLrc();
  void showWord(int time);//显示歌词
  void initlrc(const QString& fileName);//初始化歌词
  void button_style();//按钮样式
  void changestartbutton();
  void cleanmap();
  void playto(int i,int );//双击播放
  void video_click_wm();//播放相应视频
  void video_click_qr();
  void video_click_cq();
  void mute();//静音
  void fastForward();//快进
  void fastBack();//快退

};
#endif // MAINWINDOW_H