1

单击按钮时我需要播放声音,我有这个:

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();
}

但没有声音播放?我哪里错了?谢谢。编辑:它现在有效,这是错误的路径。

4

2 回答 2

1

可能文件路径“Click/sound.wav”没有指向您认为它指向的位置。

在调用 setCurrentSource() 函数之前试试这个:

bool exists = QFile::exists("Click/sound.wav");

如果 Click 目录应该与您的 exe 位于同一目录中,请创建如下路径:

QString filePath = QCoreApplication::applicationDirPath() + "/Click/sound.wav";
clickObject->setCurrentSource(Phonon::MediaSource(filePath));

我建议使用Qt 资源系统。然后你会指向这样的声音文件:

clickObject->setCurrentSource(Phonon::MediaSource(":/Click/sound.wav"));
于 2012-02-18T13:16:26.380 回答
0

您至少应该将stateChanged(Phonon::State, Phonon::State)来自MediaObject对象的信号连接到自定义插槽以检测错误:如果状态更改为Phonon::ErrorState错误原因,则可以通过QMediaObject::errorString().

于 2012-02-18T13:10:58.160 回答