首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自动销毁QMediaPlayer?

如何自动销毁QMediaPlayer?
EN

Stack Overflow用户
提问于 2017-02-13 06:01:58
回答 1查看 717关注 0票数 0

我使用Qt文档中的这段代码在我的应用程序中播放音频文件(通知等):

代码语言:javascript
复制
QMediaPlayer *player = new QMediaPlayer();
player->setMedia(QUrl("qrc:/huggle/sounds/" + file));
player->setVolume(100);
player->play();

然而,在我看来,它将会泄漏,因为没有媒体播放器的析构函数。

有没有办法在它以非阻塞方式结束播放后将其删除?挂起一些事件可能会起作用,但还不清楚是哪一个。

EN

回答 1

Stack Overflow用户

发布于 2017-02-13 15:45:15

我想您可以简单地使用状态为QMediaPlayer::EndOfMedia的信号QMediaPlayer::mediaStatusChanged(QMediaPlayer::MediaStatus status)!?

或者只是将指向QMediaPlayer的指针保存在您的类中,以供以后使用。

代码语言:javascript
复制
connect(player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), SLOT(player_mediaStatusChanged(QMediaPlayer::MediaStatus)));


// slot
void YourClass::player_mediaStatusChanged(QMediaPlayer::MediaStatus status)
{
    if (status == QMediaPlayer::EndOfMedia)
        sender()->deleteLater(); // will schedule the deletion of your QMediaPlayer (sender of this signal)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42193796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档