Один меньший вариант будет использовать position()
, который возвращает текущую позицию как qint64
- если вы вызываете метод play()
для вашего QMediaPlayer
, тогда используйте что-то вроде
while (player.position() < input) {}
player.stop(); // Or player.pause();
он будет ждать, пока не будет достигнута позиция input
.Но недостатком этого подхода является блокирующий цикл while
, и, не зная предполагаемого приложения, я не знаю, будет ли это целесообразным.Вероятно, лучше использовать сигнал QMediaPlayer::positionChanged
(который излучается на основе QMediaPlayer
s notifyInterval
), что-то вроде
connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(checkPosition());
, где предполагается, что this
является приемником, аplayer
и input
ограничены так, что они доступны для слота checkPosition()
.checkPosition()
затем выглядит примерно так:
checkPosition() {
if (player.position() > input()) {
player.stop(); // Or player.pause();
}
}
Конечно, вы также можете передать player
и input
в слот checkPosition()
, но я упустил это для простоты.Надеюсь, это поможет.