Я относительно новичок в Qt, поэтому я объясню этот вопрос и то, что я надеюсь достичь как можно яснее.
В настоящее время у меня есть кнопки, которые при нажатии воспроизводят звуковой файл, расположенный в каталоге приложений.
Я провел небольшое исследование и обнаружил, что многие пользователи говорят, что использование Phonon лучше, чем QSound. Это приложение только для платформы Windows, поэтому ничего особенного не требуется.
Вот код, который я имею в mainwindow.cpp:
void MainWindow::on_obj_button_gandalf_clicked()
{
Phonon::MediaObject *music =
Phonon::createPlayer(Phonon::MusicCategory,Phonon::MediaSource("sound_file.mp3"));
music->play();
}
Звук играет отлично. Однако, если пользователю пришлось нажать кнопку второй раз, пока звук все еще воспроизводится с первого щелчка, он воспроизводится один над другим.
Есть ли какая-то функция isplaying () или что-то, чтобы определить, действительно ли воспроизводится тот же самый звук? Если это так, он не должен воспроизводить его снова, если нет, то должен воспроизводить песню в соответствии с запросом.
Я использую Qt 4.7.0 32bit
Чтение документация, кажется, это так же просто, как звонить music->state()
и … проверка состояния.
if (music->state() == Phonon::PlayingState) {
...
Вы также заметите, что есть ряд сигналов, которые позволят вам управлять этим в вашем приложении, в частности, StateChanged сигнал.
Других решений пока нет …