Phonon QT - воспроизводите звук на кнопке нажмите

StackOverflow https://stackoverflow.com/questions/9340805

  •  27-10-2019
  •  | 
  •  

Вопрос

Мне нужно воспроизвести звук, когда нажата кнопка, у меня есть:

Phonon::MediaObject *clickObject = new Phonon::MediaObject(this);
clickObject->setCurrentSource(Phonon::MediaSource("Click/sound.wav");
Phonon::AudioOutput *clickOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
Phonon::createPath(clickObject, clickOutput);

а также

void MainWindow::on_pushButton_clicked()
{
   clickObject->play();
}

Но звук не играет? Где я ошибаюсь? Спасибо. РЕДАКТИРОВАТЬ: сейчас работает, это был неправильный путь.

Это было полезно?

Решение

Вероятно, путь к файлу "click/sound.wav" не указывает там, где вы думаете, что он указывает.

Попробуйте это перед вызовом setcurrentsource ()-функция:

bool exists = QFile::exists("Click/sound.wav");

Если каталог кликов должен быть в том же каталоге, что и ваш EXE, создайте путь, как это:

QString filePath = QCoreApplication::applicationDirPath() + "/Click/sound.wav";
clickObject->setCurrentSource(Phonon::MediaSource(filePath));

И я бы предложил использовать QT Ресурсная система. Анкет Тогда вы укажете на звуковой файл так:

clickObject->setCurrentSource(Phonon::MediaSource(":/Click/sound.wav"));

Другие советы

Вы должны хотя бы подключить сигнал stateChanged(Phonon::State, Phonon::State) от твоего MediaObject возразить против пользовательского слота для обнаружения ошибок: если состояние изменится на Phonon::ErrorState Причина ошибки может быть доступна через QMediaObject::errorString().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top