-2

私はQtに比較的慣れていないので、この質問と私が達成したいことをできるだけ明確に説明します。

現在、クリックするとアプリケーションディレクトリにあるサウンドファイルを再生するボタンがあります。少し調査したところ、多くのユーザーが QSound よりも Phonon を使用する方が優れていると言っていることがわかりました。このアプリケーションは Windows プラットフォーム専用なので、特別なことは必要ありません。

mainwindow.cpp にあるコードは次のとおりです。

void MainWindow::on_obj_button_gandalf_clicked()
{
        Phonon::MediaObject *music =
        Phonon::createPlayer(Phonon::MusicCategory,Phonon::MediaSource("sound_file.mp3"));
        music->play();
}

音は完璧に再生されます。ただし、ユーザーが最初のクリックからサウンドがまだ再生されている間にボタンを 2 回クリックする必要がある場合は、一方が他方の上に再生されます。

同じサウンドが実際に既に再生されているかどうかを判断するための isplaying() 関数または何かがありますか? そうであれば、それを再度再生するべきではなく、そうでない場合は、要求されたとおりに曲を再生する必要があります。

Qt 4.7.0 32ビットを使用しています

4

1 に答える 1

2

ドキュメントを読むと、呼び出しmusic->state()て...状態を確認するのと同じくらい簡単なようです。

if (music->state() == Phonon::PlayingState) {
    ...

また、アプリケーションでこれを管理できる多数のシグナル、具体的にはstateChangedシグナルがあることにも注意してください。

于 2013-01-26T20:06:59.657 に答える