QMediaPlaylist :: CurrentItemOnce не дает требуемый результат - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь реализовать механизм петли в моем медиаплеере, используя QMediaPlayer и QMediaPlayList . При использовании этих режимов воспроизведения:

QMediaPlayList::Sequential
QMediaPlayList::Loop
QMediaPlayList::Random

это работает так, как я ожидал, это означает, что начинает воспроизводиться следующий или случайный носитель.

Однако для этих двух ниже

QMediaPlayList::CurrentItemOnce
QMediaPlayList::CurrentItemInLoop

это не так.

Проблема в том, что при использовании этих двух режимов каждый раз, когда я нажимаю на кнопку «Далее» кнопка, которая должна изменить текущий воспроизводимый медиафайл на следующий, вызвав QMediaPlayList::next, на самом деле это ничего не меняет.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 02 июня 2019

Взглянув на официальную документацию next, которая вызывает nextIndex, я думаю, что именно это и происходит. Рассматривая реализацию,

Поэтому, если вы хотите перейти к следующему элементу, измените режим воспроизведения, позвоните далее и верните исходный режим воспроизведения.

if (//check playbackmode){          
    mediaplaylist1->setPlaybackMode(QMediaPlaylist::PlaybackMode::Loop);
    mediaplaylist1->next();
    mediaplayer1->play();
    mediaplaylist1->setPlaybackMode(QMediaPlaylist::PlaybackMode::CurrentItemOnce);
}

Подробнее см. здесь

0 голосов
/ 29 мая 2019

Следуя документации nextIndex (которая, вероятно, вызывается при использовании QMediaPlaylist::next(), возвращаемое значение индекса будет зависеть от размера списка воспроизведения, текущей позиции в нем и режима воспроизведения.

Следуя реализации далее во внутренних элементах Qt , вы можете видеть, что следующий индекс для QMediaPlaylist::CurrentItemOnce равен -1, а для QMediaPlaylist::CurrentItemInLoop - текущий индекс.

Следовательно, поведение является последовательным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...