1

当用户在 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;
}
4

2 回答 2

1

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

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

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

QSound::play("File name.wav");
于 2012-09-14T20:33:58.630 回答
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;
   }
于 2017-06-14T21:33:09.090 回答