Проблема в вашем звонке на QThread::msleep(2500)
;он предотвращает выполнение цикла событий Qt (потому что a.exec()
не может работать до тех пор, пока он не вернется), и это, в свою очередь, препятствует воспроизведению звука.
Простое решение - удалить эту строку и вызовна w.show()
и замените их на что-то вроде этого:
QTimer::singleShot(2500, &w, SLOT(show()));
... Это приведет к тому, что ваш виджет MainWindow
появится одновременно с исчезновением заставки.