Russian Qt Forum
Ноябрь 22, 2024, 00:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Так какой всё-таки mediaStatus() должен быть?  (Прочитано 5659 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Октябрь 12, 2017, 16:46 »

Проигрываю аудио-файл с помощью 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? И самое главное - как это отличить от случая, когда воспроизведение закончилось принудительно, а не по концу трека?
Кто-нибудь разбирался?
« Последнее редактирование: Октябрь 12, 2017, 16:50 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #1 : Октябрь 12, 2017, 17:36 »

Похоже наоборот надо - ловить сигнал mediaStatusChanged(QMediaPlayer::MediaStatus) и в нём проверять состояние плеера. Этот сигнал при окончании трека выдаётся после stateChanged(QMediaPlayer::State). Если медиа статус EndOfMedia и состояние плеера StoppedState, значит трек закончился. В других случаях комбинации сигналов другие. Хрена с два где-нибудь это описано.
Записан

2^7-1 == 127, задумайтесь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.464 секунд. Запросов: 22.