Phonon Qt - Reproducir el sonido en el botón Haga clic
-
27-10-2019 - |
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.
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()
.