QT 6.4中视频播放完毕后关闭QVideoWidget窗口的实现方法
QT 6.4 实现视频播放完毕自动关闭窗口及自定义组件播放方案
方案一:播放完毕自动关闭QVideoWidget窗口
核心是通过监听QMediaPlayer的媒体状态变化,捕捉视频播放结束的信号来触发窗口关闭操作,同时做好资源释放避免内存泄漏。
修改后的实现代码:
void MainWindow::on_playButton_clicked() { QMediaPlayer* player = new QMediaPlayer(this); player->setSource(QUrl("C:/Users/QTDev/Desktop/final.mp4")); QAudioOutput *audioOutput = new QAudioOutput(this); player->setAudioOutput(audioOutput); audioOutput->setVolume(1.0); QVideoWidget* videoWidget = new QVideoWidget; player->setVideoOutput(videoWidget); // 监听媒体状态,播放结束时关闭窗口并释放资源 connect(player, &QMediaPlayer::mediaStatusChanged, this, [=](QMediaPlayer::MediaStatus status){ if(status == QMediaPlayer::EndOfMedia){ videoWidget->close(); videoWidget->deleteLater(); player->deleteLater(); audioOutput->deleteLater(); } }); videoWidget->showFullScreen(); player->play(); }
关键说明:
- 将
player和audioOutput的父对象设为主窗口,或在关闭时调用deleteLater(),避免内存泄漏。 mediaStatusChanged信号会在媒体状态切换时触发,当状态为QMediaPlayer::EndOfMedia时,说明视频已播放完毕,此时执行窗口关闭和资源释放操作。
方案二:在QT Designer自定义组件中播放视频
如果需要在Designer设计的界面中嵌入视频播放组件,可按以下步骤实现:
- 在QT Designer中拖入一个
QWidget,右键选择「提升为...」,输入QVideoWidget,确认头文件包含QVideoWidget,完成组件提升。 - 在代码中关联该自定义组件与媒体播放器,并添加播放结束逻辑。
示例代码:
// 假设Designer中提升的QVideoWidget对象名为ui_videoWidget void MainWindow::on_playButton_clicked() { QMediaPlayer* player = new QMediaPlayer(this); player->setSource(QUrl("C:/Users/QTDev/Desktop/final.mp4")); QAudioOutput *audioOutput = new QAudioOutput(this); player->setAudioOutput(audioOutput); audioOutput->setVolume(1.0); // 关联自定义的QVideoWidget组件 player->setVideoOutput(ui->ui_videoWidget); // 播放结束逻辑:可关闭主窗口或隐藏组件 connect(player, &QMediaPlayer::mediaStatusChanged, this, [=](QMediaPlayer::MediaStatus status){ if(status == QMediaPlayer::EndOfMedia){ this->close(); // 若只需隐藏组件,改为 ui->ui_videoWidget->hide(); player->deleteLater(); audioOutput->deleteLater(); } }); ui->ui_videoWidget->showFullScreen(); player->play(); }
关键说明:
- 提升组件时需确保项目中已包含
QT += multimedia multimediawidgets模块(在.pro文件中添加)。 - 若不需要关闭整个主窗口,可替换为隐藏视频组件的逻辑,灵活适配需求。
内容的提问来源于stack exchange,提问作者Almnayer
相关产品推荐
相关产品推荐

