Phonon Qt - son jeu sur le bouton clic
-
27-10-2019 - |
Question
je dois jouer un son quand un bouton est cliqué, j'ai ceci:
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);
et
void MainWindow::on_pushButton_clicked()
{
clickObject->play();
}
mais aucun son est joué? Où suis-je tort? Merci. EDIT:. Il fonctionne maintenant, il était le mauvais chemin
La solution
Probablement le chemin du fichier « Cliquez / sound.wav » ne pointe pas où vous pensez qu'il fait.
Essayez ceci avant d'appeler la setCurrentSource () - fonction:
bool exists = QFile::exists("Click/sound.wav");
Si le répertoire Click est censé être dans le même répertoire que votre exe, créez le chemin comme ceci:
QString filePath = QCoreApplication::applicationDirPath() + "/Click/sound.wav";
clickObject->setCurrentSource(Phonon::MediaSource(filePath));
Je suggère d'utiliser Qt système de ressources . Ensuite, vous pointer vers le fichier audio comme ceci:
clickObject->setCurrentSource(Phonon::MediaSource(":/Click/sound.wav"));
Autres conseils
Vous devez au moins connecter le signal stateChanged(Phonon::State, Phonon::State)
de votre objet MediaObject
à un emplacement personnalisé pour détecter les erreurs. Si l'état change à Phonon::ErrorState
la raison de l'erreur pourrait être accessible par QMediaObject::errorString()