Добрый день.
Собственно есть проект, где по определённому событию должны воспроизводиться звуки, но в большом проекте косяк - воспроизводиться только одна аудиозапись, далее на события от колонок нет реакции.
Решил накидать простенькую прогу дабы прощупать Phonon.
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
m_mediaObject = new Phonon::MediaObject(this);
Phonon::createPath(m_mediaObject, m_audioOutput);
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(Bla()));
}
......
......
......
void MainWindow::Bla()
{
QString str;
str = "qwe.wav";
switch (m_mediaObject->state())
{
case 0: //begin
{
m_mediaObject->enqueue(str);
m_mediaObject->play();
break;
}
case 2: //play
{
m_mediaObject->enqueue(str);
m_mediaObject->play();
break;
}
case 4: //pause
{
m_mediaObject->stop();
m_mediaObject->enqueue(str);
m_mediaObject->play();
break;
}
}
}
Создал форму где 1 кнопка и 1 лейбл. Кнопка отвечает за вызов слота Bla(), лейбл показывает текущее состояние m_mediaObject->state().
И получается следущая картина маслом. При загрузке программы в лейбле вижу "0" - "LoadingState".
При нажатии кнопки лейбл показывает "PlayingState" - звук воспроизводиться. Жду пока закончится дорожка, лейбл показывает "PausedState". Жму ещё раз кнопку - аналогичная ситуация. Всё отрабатывается идеально.
Но... Если я жму кнопку когда дорожка ещё не закончила вопроизведение - ничего не происходит, очередь не изменяется. Могу добиться повторного вопроизведения только после окончания дорожки и повторного нажатии клавиши. В чём косяк ? И ещё если я изменяю
...
case 2: //play
{
m_mediaObject->pause();
m_mediaObject->play();
break;
}...
В лейбле отображается статус паузы и всё, воспроизведение не продолжается! Почему ?