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.

War es hilfreich?

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().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top