音乐播放时如何避免微滞后?

时间:2017-04-02 11:23:41

标签: c++ qt

我在Qt写的音频播放器。我使用QMediaPlayer。我尝试将音乐位置与QSlider连接起来,但是当2连接工作时,它会产生微滞后。那是我的代码:

connect(player, &QMediaPlayer::positionChanged, this, [&](qint64 value){
    int pos = static_cast<int>(value);
    ui->positionSlider->setValue(pos);
});
connect(ui->positionSlider, &QSlider::valueChanged, this, [&](int value){
    player->setPosition(value);
});

如何修复此错误?

1 个答案:

答案 0 :(得分:4)

您需要在滑块值更改时检查slider is pressed是否正确。

如果没有按下,则表示这只是一个进展事件。

如果按下,则表示用户正在与之交互,因此设置了媒体播放器位置

connect(ui->positionSlider, &QSlider::valueChanged, this, [&](int value)
{
    if (ui->positionSlider->isSliderDown())
        player->setPosition(value);
});

顺便说一句,这正是他们在reference example中所做的。