美文网首页
QT5 音乐播放器基本功能

QT5 音乐播放器基本功能

作者: QingLinger | 来源:发表于2017-03-30 01:05 被阅读0次

QT5实现音乐播放器是十分简单的,因为内部已经封装好了 QMediaPlayer 和 QMediaPlaylist。通过QMediaPlaylist加入歌曲,形成歌曲列表,再把列表加入到QMediaPlayer 中去。然后直接通过QMediaPlayer 的函数来实现对音乐的基本操作。QMediaPlayer 还提供了一些信号,比如进度和音量,可以直接获取并做其他操作。

  1. 创建播放器对象和加入播放列表。
    QMediaPlayer *player; //音乐播放器
    QMediaPlaylist *playList; //音乐播放列表
    playList=new QMediaPlaylist;
    playList->setPlaybackMode(QMediaPlaylist::Random);
    player=new QMediaPlayer;
    player->setPlaylist(playList);
  • 添加本地音乐。
    connect(ui->pushButton_add, SIGNAL(clicked()), this, SLOT(slot_importLocalSongs()));
    void Body::slot_importLocalSongs()
    {
    QString initialName=QDir::homePath();
    QStringList pathList=QFileDialog::getOpenFileNames(this, tr("选择文件"), initialName, tr("*.mp3"));
    for(int i=0; i<pathList.size(); ++i) {
    QString path=QDir::toNativeSeparators(pathList.at(i));
    if(!path.isEmpty()) {
    playList->addMedia(QUrl::fromLocalFile(path));
    QString fileName=path.split("\").last();
    int rownum=ui->tableWidget_music->rowCount();
    ui->tableWidget_music->insertRow(rownum);
    ui->tableWidget_music->setItem(rownum, 0, new QTableWidgetItem(fileName.split(".").front()));
    }
    }
    }

  • 播放或暂停音乐。
    connect(ui->pushButton_play, SIGNAL(clicked()), this, SLOT(slot_playOrPause()));
    void Body::slot_playOrPause()
    {
    if(ui->pushButton_play->text()==tr(">"))
    {
    player->play();
    ui->pushButton_play->setText(tr("||"));
    }
    else
    {
    player->pause();
    ui->pushButton_play->setText(tr(">"));
    }
    }

  • 播放上一首。
    connect(ui->pushButton_pre, SIGNAL(clicked()), this, SLOT(slot_playPrev()));
    void Body::slot_playPrev()
    {
    int currentIndex = playList->currentIndex();
    if(--currentIndex<0)
    currentIndex = ui->tableWidget_music->rowCount() - 1;
    playList->setCurrentIndex(currentIndex);
    player->play();

         //高亮
         ui->tableWidget_music->selectRow(currentIndex);
         ui->tableWidget_music->setFocus(Qt::MouseFocusReason);
     }
    
  • 播放下一首。
    connect(ui->pushButton_next, SIGNAL(clicked()), this, SLOT(slot_playNext()));
    void Body::slot_playNext()
    {
    int currentIndex=playList->currentIndex();
    if(++currentIndex==playList->mediaCount())
    currentIndex=0;
    playList->setCurrentIndex(currentIndex);
    player->play();

         //高亮
         ui->tableWidget_music->selectRow(currentIndex);
         ui->tableWidget_music->setFocus(Qt::MouseFocusReason);
     }
    
  • 进度条设置
    connect(ui->slider_duration, SIGNAL(sliderMoved(int)), this, SLOT(slot_setPosition_duration(int)));
    void Body::slot_setPosition_duration(int position)
    {
    player->setPosition(position);
    }

  • 音量设置
    connect(ui->slider_volume, SIGNAL(valueChanged(int)), this, SLOT(slot_setPosition_volume(int)));
    void Body::slot_setPosition_volume(int volume)
    {
    if(flag_slience) //如果是静音的
    {
    ui->pushButton_silence->setText("off"); //标识设为静音
    flag_slience = false; //标识设为非静音
    }
    player->setVolume(volume); //设置播放器的
    ui->slider_volume->setValue(volume);
    }

相关文章

网友评论

      本文标题:QT5 音乐播放器基本功能

      本文链接:https://www.haomeiwen.com/subject/ivnsottx.html