QMediaPlayer:发出positionChanged()时声音中断

时间:2015-03-18 13:08:25

标签: c++ qt qmediaplayer

我有像QMediaPlayer positionChanged(). Sound inteerupts on slider updating

这样的问题

我使用QMediayPlayer,每当发出信号positionChanged()来更新我的滑块位置并且我为滑块设置一个新值时,声音就会中断片刻。

这是在构造函数中:

soundfile = new QMediaPlayer(this, QMediaPlayer::LowLatency); //soundfile is a pointer of a QMediaPlayer Object

QObject::connect(soundfile, SIGNAL(positionChanged(qint64)), this, SLOT(changedPosition(qint64)));

这是插槽功能:

void Soundfile::changedPosition(qint64 p) {
    QTime time(0,0,0,0);
    time = time.addMSecs(soundfile->position());

    if(p != 0) recordSlider->setValue(p); //THIS IS THE LINE, WHERE IT INTERRUPTS
    changeRecordTime(QString::number(p));
    recordPositionLabel->setText("Aktuelle Zeit: " + time.toString());
}

recordSlider是一个QSlider。 如果我用setValue注释掉这一行,一切正常。

有没有人有想法?

1 个答案:

答案 0 :(得分:1)

我认为问题在于:当媒体播放器发出SIGNAL SLOT被调用时,当您在函数中使用setValue时,setValue会发出再次SIGNAL,然后又重新开始。

为了解决这个问题,我禁用了滑块跟踪并使用setSliderPosition移动了位置。

示例:

slider->setTracking(false);
slider->setSliderPosition(pos);