Qt c ++按键播放声音 - 几秒钟后停止工作

时间:2012-09-14 19:03:40

标签: c++ qt

当用户在QTextEdit中输入内容时,我正在制作一个需要播放.wav文件的应用程序。我制作了一些代码,但是在一两分钟之后,声音停止了,所以我做了一些愚蠢的工作。点击30次后,我调用了sound-> stop();然后循环再次开始,这是有效的,但它不好,你能给出更好的解决方案。这是我的代码:

int count = 0;
bool MainWindow::eventFilter(QObject *o, QEvent *e){
    if(e->type() == QEvent::KeyPress)
       {
        tipka->play();
        tipka->seek(0);
        count++;
        if(count == 30){
            tipka->pause();
            count = 0;
        }
       }
    return false;
}

2 个答案:

答案 0 :(得分:1)

您可以使用QSound。它不提供任何搜索功能,但它使您能够循环,播放和停止。它不是功能丰富,但它完成了工作。

QSound sound("File name.wav");
sound.play();
sound.stop();

此外,您可以使用其静态功能播放声音。

QSound::play("File name.wav");

答案 1 :(得分:0)

试试这个,谢谢我以后:) 在您的MainWindow构造函数中 -

  installEventFilter(this);
标题中的

-

  protected:
  bool eventFilter(QObject *, QEvent*);

在cpp中 -

  bool MainWindow::eventFilter(QObject *o, QEvent *e){

  Q_UNUSED(o);

  if(e->type() == QEvent::KeyRelease)
    {        player->stop();
            player->setMedia(QUrl("qrc:/sounds/button_push.mp3"));
            player->play();
    }
     return false;
   }