QT之QMediaPlayer实现音乐播放功能 带工程
QT 提供了音频播放类接口,分别是QMediaPlaylist和QMediaPlayer两个类,其中QMediaPlaylist类主要管理MP3文件,包括添加和删除等操作;QMediaPlayer 提供播放 和停止等等相关功能。通过这两个类实现了一个简单的音乐播放器,其效果如下:
实现过程如下:
1、在*.pro工程里添加multimedia和multimediawidgets。
QT += multimedia
QT += multimediawidgets
2、创建界面相关操作按钮和显示。添加pushButton、QSlider 、Label 、QlistWidget 等控件。
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;i<list.size();i++)
{
QListWidgetItem *item=new QListWidgetItem;
item->setIcon(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