如何在QT中飞溅之前播放声音?

  • 本文关键字:播放声音 QT c++ qt
  • 更新时间 :
  • 英文 :


我想在飞溅中播放声音,但使用以下代码,我让飞溅显示,然后,只有当飞溅消失时,才会播放声音。有人可以帮助我吗?谢谢。

QApplication a(argc, argv);
QMediaPlayer * splashSound = new QMediaPlayer;
splashSound->setMedia(QUrl("qrc:/sfx/splash_sound.wav"));
splashSound->play();
QSplashScreen * mainSplash = new QSplashScreen;
mainSplash->setPixmap(QPixmap(":/img/splash.png"));
mainSplash->show();
MainWindow w;
QTimer::singleShot(2500, mainSplash, SLOT(close()));
QThread::msleep(2500);
w.show();
return a.exec();

问题是你对QThread::msleep(2500)的调用;它阻止Qt事件循环执行(因为a.exec()在返回之前不能运行(,这反过来又阻止了音频的播放。

简单的解决方法是删除该行和对w.show()的调用,并将它们替换为如下所示的内容:

QTimer::singleShot(2500, &w, SLOT(show()));

。这将导致您的MainWindow小部件在启动图像消失的同时出现。

最新更新