簡體   English   中英

QMediaPlayer:發出positionChanged()時聲音中斷

[英]QMediaPlayer: Sound interrupts when positionChanged() is emitted

我有像QMediaPlayer positionChanged()這樣的問題 滑塊更新時發出聲音

我使用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注釋掉行,則一切正常。

有人有主意嗎?

我認為問題在於:當媒體播放器發出SIGNAL ,將調用SLOT ,而當您在函數內部使用setValue時, setValue會再次發出SIGNAL ,然后過程再次發生。

為了解決該問題,我禁用了滑塊跟蹤,並使用setSliderPosition移動位置。

例:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM