QT之QMediaPlayer实现音乐播放功能 带工程

                                          QT之QMediaPlayer实现音乐播放功能 带工程

           QT 提供了音频播放类接口,分别是QMediaPlaylist和QMediaPlayer两个类,其中QMediaPlaylist类主要管理MP3文件,包括添加和删除等操作;QMediaPlayer 提供播放 和停止等等相关功能。通过这两个类实现了一个简单的音乐播放器,其效果如下:

QT之QMediaPlayer实现音乐播放功能 带工程_第1张图片

实现过程如下:

1、在*.pro工程里添加multimedia和multimediawidgets。

QT       += multimedia
QT       += multimediawidgets

2、创建界面相关操作按钮和显示。添加pushButton、QSlider 、Label  、QlistWidget 等控件。

QT之QMediaPlayer实现音乐播放功能 带工程_第2张图片
 

3、添加歌曲到listWidget,把歌曲列表添加到播放 play->addMedia(QUrl::fromLocalFile(path));中去。

void Dialog::on_pushButton_4_clicked()
{
   QStringList list=QFileDialog::getOpenFileNames(this,("文件"),currentFileName[1],("音频文件(*.mp3)"));
    if(!list.isEmpty())
   {
        ui->listWidget->clear();
        play->clear();
     for(int i=0;isetIcon(QIcon(":/pifu/YIN.png"));
        QString path=QDir::toNativeSeparators(list.at(i));
        if(!path.isEmpty())
        {

           QString path1 = path;
           play->addMedia(QUrl::fromLocalFile(path));
           QString Name=path.split("\\").last();
           currentFileName[1] = path1.remove(Name);
           Name.remove(QString(".mp3"));
           item->setText(QString("%1").arg(Name));
           item->setToolTip(Name);
          
           ui->listWidget->addItem(item);
           FilePath.push_back(path);


        }
    }


    }



}

4、播放和暂停功能

void Dialog::on_pushButton_2_clicked()
{


        if(ui->listWidget->count()==0)
        {
            return;
        }

       if(music->state()==QMediaPlayer::PlayingState)
        {
           ui->pushButton_2->setIcon(QIcon(":/image/pase.png"));
           ui->pushButton_2->setStyleSheet(PaseStyle());
           ui->pushButton_2->setToolTip(("暂停"));

           music->pause();


        }
        else
        {
           ui->pushButton_2->setIcon(QIcon("/image/play.png"));
           ui->pushButton_2->setStyleSheet(PlayStyle());
           ui->pushButton_2->setToolTip(("播放"));
           music->play();

        }


}

 

5、更新歌曲信息

void Dialog::updateInfo()//更新文本
{

    QString info;
    info=("正在播放:  ");
    if(music->isMetaDataAvailable())
    {
        QString title=music->metaData(QStringLiteral("Title")).toString();
        if(!title.isEmpty())
        {
            info+=title;
        }
        else
        {
            info+=("未知歌曲");
        }
        info+="-";
        QString author=music->metaData(QStringLiteral("Author")).toString();
        if(!author.isEmpty())
        {
            info+=author;
        }
        else
        {
          info+=("未知作者");
        }
    }

    ui->label->setText(info);
}

 

6、源码地址

https://download.csdn.net/download/u011996698/11834966

 

 

 

 

 

 

你可能感兴趣的:(QT之路)