Phonon Qt - Klicken Sie auf der Schaltfläche Klicken Sie auf Klicken Sie auf
-
27-10-2019 - |
Frage
Ich muss einen Sound abspielen, wenn ein Schaltfläche klickt, ich habe Folgendes:
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);
und
void MainWindow::on_pushButton_clicked()
{
clickObject->play();
}
Aber kein Ton wird gespielt? Wo habe ich falsch? Vielen Dank. Bearbeiten: Es funktioniert jetzt, es war der falsche Weg.
Lösung
Wahrscheinlich zeigt der Dateipfad "Click/Sound.wav" nicht, wo Sie denken, dass er zeigt.
Versuchen Sie dies, bevor Sie die SetCurrentSource ()-Funktion aufrufen:
bool exists = QFile::exists("Click/sound.wav");
Wenn das Klick -Verzeichnis im selben Verzeichnis wie Ihr EXE sein soll, erstellen Sie den Pfad wie folgt:
QString filePath = QCoreApplication::applicationDirPath() + "/Click/sound.wav";
clickObject->setCurrentSource(Phonon::MediaSource(filePath));
Und ich würde vorschlagen, die Verwendung zu verwenden QT -Ressourcensystem. Dann verweisen Sie auf die Sounddatei wie folgt:
clickObject->setCurrentSource(Phonon::MediaSource(":/Click/sound.wav"));
Andere Tipps
Sie sollten das Signal zumindest anschließen stateChanged(Phonon::State, Phonon::State)
von deiner MediaObject
Objekt gegen einen benutzerdefinierten Slot, um Fehler zu erkennen: Wenn sich der Status an ändert Phonon::ErrorState
Der Grund des Fehlers kann durch zugänglich sein über QMediaObject::errorString()
.