2016-01-12 75 views
0

在我的資源文件中,我有31個引擎聲音樣本。我想製作一個滑塊,其中的移動會將樣本更換爲另一個樣本(發動機啓動時發出更高的聲音,聲音更低)。我的代碼滑塊:儘管使用stop(),QMediaPlayer示例重疊()

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

這是因爲每次你滑入新QMediaPlayer滑塊創建:

QMediaPlayer * music = new QMediaPlayer(); 

您應該將玩家創造一些別的地方。例如你的類構造函數。

相關問題