我想在飞溅中播放声音,但使用以下代码,我让飞溅显示,然后,只有当飞溅消失时,才会播放声音。有人可以帮助我吗?谢谢。
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
小部件在启动图像消失的同时出现。