网易云不能播放音乐算什么播放器,这里就简单的加了一个播放功能,目前可以播放当地音乐,下面我们来看看吧。代码整理中,下个博客上传源码。
点击开始按钮就可听到音乐了,这里要注意的地方就是播放条与音乐的进度问题,音乐播放改变进度条,但是我们又想拖动音乐条改变当前播放位置。这样逻辑就成立一个死循环。播放歌曲的时候呢,就会断断续续
这里的解决方案就是bloksingle,在变的一下可以,停止发送对象的信号,这样就完美的解决了问题所在。
代码段部分:
player = new QMediaPlayer(this);//
playlist = new QMediaPlaylist(this);//
playlist->setPlaybackMode(QMediaPlaylist::Loop); //循环模式
player->setPlaylist(playlist);
connect(player,&QMediaPlayer::positionChanged,[=](qint64 duration){
if(ui->horizontalSlider_music->isSliderDown())
{
return ;
}
ui->horizontalSlider_music->blockSignals(true);
ui->horizontalSlider_music->setSliderPosition(int(duration));
ui->horizontalSlider_music->blockSignals(false);
int secs = int(duration)/1000;
int min = secs/60; //取整
secs = secs%60; //剩余秒
positionTime=QString::asprintf("%d:%d",min,secs);
ui->label_time->setText(positionTime);
});
connect(player,&QMediaPlayer::durationChanged,[=](qint64 duration){
ui->horizontalSlider_music->setMaximum(int(duration));
int secs = int(duration)/1000;
int min = secs/60; //取整
secs = secs%60; //剩余秒
durationTime = QString::asprintf("%d:%d",min,secs);
ui->label_time_long->setText(durationTime);
});
//加载音乐
playlist->addMedia(QUrl::fromLocalFile("./music/music.mp3"));//添加文件
playlist->setCurrentIndex(0);
信号槽部分:
void AllMain::on_horizontalSlider_music_valueChanged(int value)
{
player->blockSignals(true);
player->setPosition(value);
player->blockSignals(false);
}
void AllMain::on_pushButton_stop_clicked(bool checked)
{
if(checked)
{
player->play();
this->setWindowTitle("能解答一切的答案");
}
else {
player->pause();
}
}