Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检查声子声音是否已经在播放?_C++_Qt_Qt4_Phonon - Fatal编程技术网

C++ 如何检查声子声音是否已经在播放?

C++ 如何检查声子声音是否已经在播放?,c++,qt,qt4,phonon,C++,Qt,Qt4,Phonon,我对Qt比较陌生,所以我将尽可能清楚地解释这个问题以及我希望实现的目标 目前,我有一些按钮,单击这些按钮时,会播放位于应用程序目录中的声音文件。 我做了一点调查,发现很多用户说使用声子比QSound好。此应用程序仅适用于Windows平台,因此不需要特殊设置 以下是我在mainwindow.cpp中的代码: void MainWindow::on_obj_button_gandalf_clicked() { Phonon::MediaObject *music =

我对Qt比较陌生,所以我将尽可能清楚地解释这个问题以及我希望实现的目标

目前,我有一些按钮,单击这些按钮时,会播放位于应用程序目录中的声音文件。 我做了一点调查,发现很多用户说使用声子比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();
}
这声音很好听。但是,如果用户必须在第一次单击后声音仍在播放时再次单击按钮,则会播放一个按钮而不是另一个按钮

是否有某种isplay()函数或其他方法来确定是否已经播放了相同的声音?如果是这样,则不应再次播放,如果不是,则应按要求播放歌曲

我正在使用Qt4.7.0 32位来读取,它看起来很简单,只需调用
音乐->状态()
和。。。检查状态

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

您还将注意到,有许多信号可以让您在应用程序中对此进行管理,特别是信号

请参见不要为每个播放的文件创建MediaObject。改为使用一个“玩家”,以便查询其状态