尽管使用了stop(),QMediaPlayer样本重叠

时间:2016-01-12 01:53:55

标签: c++ qt audio

在我的资源文件中,我有31个引擎声音样本。我想做一个滑块,移动将改变另一个样本(更高的引擎开始大喊,降低它会更平静)。我的滑块代码:

void MainWindow::on_poziomMocy_sliderMoved(int position)
{
    QMediaPlayer * music = new QMediaPlayer();
   //play umieścić w caseach i kończyć je stop. Tak jak to miałem wcześniej, dodać cały plik
    //do resources
    switch(position)
    {
        case 0:
        {
            music->stop();
            music->setMedia(QUrl("qrc:/sounds/dźwięki/859.wav"));
            music->play();
        }
        case 1:
        {
            music->stop();
            music->setMedia(QUrl("qrc:/sounds/dźwięki/919.wav"));
            music->play();
        }
        case 2:
        {
            music->stop();
            music->setMedia(QUrl("qrc:/sounds/dźwięki/984.wav"));
            music->play();
        }
        case 3:
        {
            music->stop();
            music->setMedia(QUrl("qrc:/sounds/dźwięki/1052.wav"));
            music->play();
        }
        case 4:
        {
            music->stop();
            music->setMedia(QUrl("qrc:/sounds/dźwięki/1126.wav"));
            music->play();
        }
   }

当我播放并滑动滑块时,样本重叠,我的扬声器正在哭泣。我不知道该怎么做"音乐"范围是对的,为什么stop()不能正常工作?

1 个答案:

答案 0 :(得分:1)

这是因为每次滑动创建的新QMediaPlayer滑块:

QMediaPlayer * music = new QMediaPlayer();

你应该把球员创造放在另一个地方。为你的班级建设者提供帮助。