声子Qt-单击按钮播放声音

声子Qt-单击按钮播放声音,qt,qt-creator,phonon,Qt,Qt Creator,Phonon,我需要在单击按钮时播放声音,我有: Phonon::MediaObject *clickObject = new Phonon::MediaObject(this); clickObject->setCurrentSource(Phonon::MediaSource("Click/sound.wav"); Phonon::AudioOutput *clickOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this); Phon

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

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

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

您至少应该连接信号
状态更改(声子::状态,声子::状态)
MediaObject
对象到自定义插槽以检测错误:如果状态更改为
Phonon::ErrorState
则可以通过
QMediaoObject::errorString()

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

访问错误原因,可能文件路径“Click/sound.wav”没有指向您认为它指向的地方

在调用setCurrentSource()函数之前,请尝试以下操作:

bool exists = QFile::exists("Click/sound.wav");
如果单击目录应与exe位于同一目录中,请创建如下路径:

QString filePath = QCoreApplication::applicationDirPath() + "/Click/sound.wav";
clickObject->setCurrentSource(Phonon::MediaSource(filePath));
clickObject->setCurrentSource(Phonon::MediaSource(":/Click/sound.wav"));
我建议使用。然后您将指向声音文件,如下所示:

QString filePath = QCoreApplication::applicationDirPath() + "/Click/sound.wav";
clickObject->setCurrentSource(Phonon::MediaSource(filePath));
clickObject->setCurrentSource(Phonon::MediaSource(":/Click/sound.wav"));
可能文件路径“Click/sound.wav”没有指向您认为它指向的位置

在调用setCurrentSource()函数之前,请尝试以下操作:

bool exists = QFile::exists("Click/sound.wav");
如果单击目录应与exe位于同一目录中,请创建如下路径:

QString filePath = QCoreApplication::applicationDirPath() + "/Click/sound.wav";
clickObject->setCurrentSource(Phonon::MediaSource(filePath));
clickObject->setCurrentSource(Phonon::MediaSource(":/Click/sound.wav"));
我建议使用。然后您将指向声音文件,如下所示:

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

第一:您使用的是什么后端?第二:单击/sound.wav在哪里?第三:应用程序提供了什么输出?输出是:PhononTest(23450):无法创建从属:无法创建io从属:klauncher说:未知协议“”。嗯。尝试播放其他媒体文件。如果消息仍然存在,请尝试重新启动系统。我尝试了另一个wav,重新启动了系统,安装了gstreamer后端,但没有任何效果,仍然是相同的消息。它可以工作!对不起,我是个白痴。我在mediasource中写入了错误的路径,在QFile::exists中写入了正确的路径。所以看起来该文件存在。非常感谢你的帮助!第一:您使用的是什么后端?第二:单击/sound.wav在哪里?第三:应用程序提供了什么输出?输出是:PhononTest(23450):无法创建从属:无法创建io从属:klauncher说:未知协议“”。嗯。尝试播放其他媒体文件。如果消息仍然存在,请尝试重新启动系统。我尝试了另一个wav,重新启动了系统,安装了gstreamer后端,但没有任何效果,仍然是相同的消息。它可以工作!对不起,我是个白痴。我在mediasource中写入了错误的路径,在QFile::exists中写入了正确的路径。所以看起来该文件存在。非常感谢你的帮助!该文件已存在。问题可能是后端。我还没有安装。我试图安装gstreamer,但它不起作用。我如何安装一些后端?您可以从这里获取的源代码处编译它,或者在软件包管理器中搜索
phonon
phonon-backend无法查询媒体类型。请尝试QString filePath=“file://”+QCoreApplication::applicationDirPath()+“/Click/sound.wav”;单击Object->setCurrentSource(Phonon::MediaSource(文件路径));该文件已存在。问题可能是后端。我还没有安装。我试图安装gstreamer,但它不起作用。我如何安装一些后端?您可以从这里获取的源代码处编译它,或者在软件包管理器中搜索
phonon
phonon-backend无法查询媒体类型。请尝试QString filePath=“file://”+QCoreApplication::applicationDirPath()+“/Click/sound.wav”;单击Object->setCurrentSource(Phonon::MediaSource(文件路径));