[英]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.