2017-04-02 75 views
2

我正在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); 
}); 

我該如何解決這個錯誤?

回答

3

您需要檢查當滑塊值發生變化時slider is pressed

如果沒有按下,這意味着它只是一個進度事件。

如果它被按壓的話,就意味着用戶與它進行交互,因此設定的媒體播放器位置

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

順便說一句,這也正是他們在reference example做什麼。

+0

它沒有工作。像'sliderPressed()'這樣的方法什麼也不返回。他們的類型是「空白」。 – Vlad

+0

我不好意思,正確的方法是isSliderDown()。我已經更新了我的回答 –

+0

它現在可以工作)非常感謝! – Vlad