2016-01-12 2 views
0

В моих файлах ресурсов у меня есть 31 образец звуков двигателя. Я хотел бы сделать слайдер, который перемещается, изменит образец для другого (более высокий движок начнет кричать, опустив его на более спокойный уровень). Мой код с ползунком:Образцы QMediaPlayer перекрываются, несмотря на использование stop()

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

Вы должны поместить создание игрока на каком-то другом месте. Для exaple в вашем конструкторе класса.

Смежные вопросы