Проигрываю аудио-файл с помощью QMediaPlayer. Нужно знать, когда оно закончило играть. Ловлю stateChanged(QMediaPlayer::State state). Смотрю состояние плеера и статус медиа.
qDebug()<<"state changed"<<state<<player->mediaStatus();
В документации Qt про статус медиа написано:
QMediaPlayer::BufferedMedia 6 The player has fully buffered the current media. The player is in the PlayingState or PausedState.
QMediaPlayer::EndOfMedia 7 Playback has reached the end of the current media. The player is in the StoppedState.
То есть, когда трек доиграл, я поймаю StoppedState и EndOfMedia? Ага, щаз... когда трек доиграл, получаю вот это:
state changed QMediaPlayer::StoppedState QMediaPlayer::BufferedMedia
Какого?... Почему не EndOfMedia? И самое главное - как это отличить от случая, когда воспроизведение закончилось принудительно, а не по концу трека?
Кто-нибудь разбирался?