Pregunta

Necesito reproducir un sonido cuando se hace clic en un botón, tengo esto:

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);

y

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

¿Pero no se reproduce ningún sonido? ¿Dónde me equivoco? Gracias. Editar: funciona ahora, era el camino equivocado.

¿Fue útil?

Solución

Probablemente la ruta del archivo "Click/Sound.wav" no apunta a dónde crees que señala.

Pruebe esto antes de llamar a setCrUrRsource ()-función:

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

Si se supone que el directorio de clics está en el mismo directorio que su EXE, cree la ruta como esta:

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

Y sugeriría usar Sistema de recursos QT. Luego señalaría el archivo de sonido como este:

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

Otros consejos

Al menos debe conectar la señal stateChanged(Phonon::State, Phonon::State) de tu MediaObject Objeto a una ranura personalizada para detectar errores: si el estado cambia a Phonon::ErrorState El motivo del error podría ser accesible a través de QMediaObject::errorString().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top