QMediaPlayer 在睡眠前不播放
Posted
技术标签:
【中文标题】QMediaPlayer 在睡眠前不播放【英文标题】:QMediaPlayer don't play before Sleep 【发布时间】:2019-04-25 09:22:05 【问题描述】:我正在 Qt Designer 中制作项目,并尝试在睡眠前播放声音。我有一个带有 on_clicked 的按钮,它首先播放 QMediaPlayer,然后休眠 2 秒,但声音是在 2 秒之后而不是之前播放的。这是按钮上的代码:
void ScreenCombate::on_usar1_clicked()
mediaplayer2 = new QMediaPlayer(this);
mediaplayer2->setMedia(QUrl("qrc:/mini/sword.mp3"));
mediaplayer2->setVolume(100);
mediaplayer2->play();
Sleep(1500);
有人知道怎么解决吗?
【问题讨论】:
【参考方案1】:您正在通过休眠阻塞主事件循环,这会导致当控制返回事件循环时发生播放。你永远不应该阻塞主事件循环,否则你的 UI 和其他东西会在睡觉时冻结。如果你真的想在代码中的某个地方等待,最好使用本地事件循环并在那里等待:
QEventLoop loop;
QTimer timer;
QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
timer.start(1500);
loop.exec();
但您应该注意,这不是一个好习惯,您最好使用信号和插槽使事情异步。
【讨论】:
以上是关于QMediaPlayer 在睡眠前不播放的主要内容,如果未能解决你的问题,请参考以下文章
哪些视频文件可以在 Android 上播放 QMediaPlayer?
Qt系列文章之二十六(基于QMediaPlayer 在 QVideoWidget或QGraphicsVideoItem 组件上播放视频)
Qt系列文章之二十六(基于QMediaPlayer 在 QVideoWidget或QGraphicsVideoItem 组件上播放视频)