Qt项目:基与Qt的音乐播放器(本地)

本文档介绍了基于Qt框架开发本地音乐播放器的详细步骤,包括选择音频文件、播放/暂停、切换歌曲、音量控制、调节语速、进度条更新、文件时长显示等功能的实现。此外,还提到了Qt多媒体模块的使用和API接口参考。
摘要由CSDN通过智能技术生成

 

目录

 

1、类中添加基本的成员

 2、实现音频文件的对话框和实现音乐的播放功能

3、切换歌曲

 4、播放/暂停

5、音量相关功能

6、调节语速 

7、 实现进度条更新以及文件时长显示

 8、双击播放自己选中的音乐

9、相关的头文件(自行看添加,也不知到前面有没有写漏的) 

10、最后是整个代码

 11、api接口


1、类中添加基本的成员

首先在 .pro文件添加 QT += multimedia       
其次在.h文件添加#include<QtMultimedia/QMediaPlayer> 和 #include<QtMultimedia/QMediaPlaylist>头文件

//在类中(.h文件)添加将player和playlist
private:
    Ui::MainWindow *ui;

    QMediaPlayer *player;    //可以简单理解为歌手
    QMediaPlaylist *playlist;  //可以简单理解为歌曲播放列表




//构造函数中添加(.cpp文件)
   player = new QMediaPlayer(this);
   playlist = new QMediaPlaylist(this);
   playlist->setPlaybackMode(QMediaPlaylist::Loop);//设置循环模式
   player->setPlaylist(playlist);//获取将播放列表要播放的文件

 2、实现音频文件的对话框和实现音乐的播放功能

      和其他应用程序一样,我们希望通过点击文件并打开文件对话框,选择要播放的音频文件,首先创建一个可以拖拽的mainwindow界面,在ui界面拖一个按钮,并将其text改为添加音频,鼠标右击转到槽,选择clicked()并单击,在生成的槽函数中加入下列代码。

在.cpp文件中加入#include<QFileDialog> 和 #include<QDir>头文件

void MainWindow::on_pushButton_5_clicked() //选择本地的播放文件
{
    QString curpash = QDir::currentPath();
    QString dlgtitle = "选择音频文件";
    QString filter="音频文件(*.mp3 *.wav *.wma);;mp3文件(*.mp3);;wav文件(*.wav);;wma文件(*.wma);;所有文件(*.*)";
    QStringList filelist = QFileDialog::getOpenFileNames(this,dlgtitle,curpash,filter);

    if(filelist.count() < 1)
    {
        return;
    }

    for(int i=0; i<filelist.count(); i++)
    {
        QString aFile =  filelist.at(i);
        playlist->addMedia(QUrl::fromLocalFile(aFile));
        QFileInfo fileInfo(aFile);
        ui->listWidget->addItem(fileInfo.fileName());  //用于显示
        ui->plainTextEdit->appendPlainText(filelist.at(i)); //用于显示
    }
    if(player->state()!=QMediaPlayer::PlayingState)
    {
        playlist->setCurrentIndex(0);
    }
    player->play();
}

 

  • QString curPash = QDir::currentPath();     获取应用程序当前的目录,也就是当前exe所在目录,可也自行设定。
  • QString dlgTitle=“选择音频文件”;     文件对话框的标题。
  • QString filter=“音频文件(.mp3 .wav .wma)mp3文件(.mp3);;wav文件(.wav);;wma文件(.wma);;所有文件(.)”;     用于设置文件过滤,每组文件之间用两个分号隔开,同一组内不同后缀之间用空格隔开。(看自己的选择)
  • getOpenFileNames( this, “Select one or more files to open”,"/home",“Images (*.png *.xpm *.jpg)”);该函数用于选择打开多个文件,拥有4个参数,需要传递的是后三个参数,分别是对话框标题(dlgTitle),初始化目录(curPash )以及文件过滤器(filter)。返回值为选择文件的带路径的完整文件名,对应的getOpenFileName()函数用于选择并打开一个文件。选择多文件还是单文件,视具体情况而定。
  • if(player->state()!=QMediaPlayer::PlayingState){   playlist->setCurrentIndex(0);   }       player->state()会返回当前播放器的状态,:PlayingState(值为1)为播放中状态,对应的还有StoppedState(值为0)空闲状态,PausedState(值为2)播放暂停状态。然后setCurrentIndex()用于设置当前播放列表的序号。
  • player->play();      播放音乐,对应的还有pause()暂停音乐,stop()关闭音乐。 

这时我们选择一个歌曲文件就能实现基本的播放了 

 

3、切换歌曲

        歌曲在PlayList列表是有序号的,第一首是0,第二首就是1,依此类推,player播放的是当前PlayList序号所标记的那一首,当我们需要切换下一首的时候,我们只需要将标记移到下一首,然后播放,就实现了切换歌曲的功能了

  //在mainwindow中添加
    int M_Sum;
    int M_Now;

ui创建上一首和下一首的按钮右击转到槽,选择clicked()槽函数。 

//在槽函数中添加
void MainWindow::on_pushButton_clicked()//上一首歌曲
{
    M_Sum = playlist->mediaCount();
    if(M_Now == M_Sum)
    {
        M_Now = 0;
        playlist->setCurrentIndex(M_Now);
        player->play();
        return;
    }
    playlist->setCurrentIndex(--M_Now);
    player->play();
}

void MainWindow::on_pushButton_3_clicked()//下一首歌曲
{
    M_Sum = playlist->mediaCount();
    if(M_Now == M_Sum)
    {
        M_Now = 0;
        playlist->setCurrentIndex(M_Now);
        player->play();
        return;
    }
   
  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值