Phonon QT-ボタンクリックでサウンドを再生します
-
27-10-2019 - |
質問
ボタンがクリックされたらサウンドを再生する必要があります。これがあります。
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);
と
void MainWindow::on_pushButton_clicked()
{
clickObject->play();
}
しかし、音はありませんか?どこが間違っていますか?ありがとう。編集:今動作します、それは間違った道でした。
解決
おそらく、「click/sound.wav」というファイルパスは、それがポイントすると思われる場所を指していません。
setCurrentSource()を呼び出す前にこれを試してください - 関数:
bool exists = QFile::exists("Click/sound.wav");
クリックディレクトリがexeと同じディレクトリにあると想定されている場合、次のようなパスを作成します。
QString filePath = QCoreApplication::applicationDirPath() + "/Click/sound.wav";
clickObject->setCurrentSource(Phonon::MediaSource(filePath));
そして、私は使用することをお勧めします QTリソースシステム. 。次に、次のようなサウンドファイルを指します。
clickObject->setCurrentSource(Phonon::MediaSource(":/Click/sound.wav"));
他のヒント
少なくとも信号を接続する必要があります stateChanged(Phonon::State, Phonon::State)
あなたから MediaObject
エラーを検出するためのカスタムスロットにオブジェクト:状態が変更した場合 Phonon::ErrorState
エラーの理由は、介してアクセスできる場合があります QMediaObject::errorString()
.
所属していません StackOverflow