效果展示
- 下面有一个按钮打开视频,点击按钮之后会出现一个弹窗选择文件,默认打开的是D盘,并且选择的文件的类型有.mp4 .flv或者所有文件。
- 选择正确的视频文件之后可以正常播放视频。
widget.h 主窗口头文件
#pragma once#include <QtWidgets/QWidget>
#include <QtMultimediaWidgets>
#include "ui_widget.h"class widget : public QWidget
{Q_OBJECTpublic:widget(QWidget *parent = nullptr);~widget();private slots:void on_btnOpen();private:Ui::widgetClass ui;QVideoWidget* m_output = nullptr;
};
- 头文件包含两个模块头文件,
QtWidgets
和QtMultimediaWidgets
,QtMultimediaWidgets
确实是一个独立的模块,它扩展了QtMultimedia
,提供了用于在Qt中显示视频的功能,如视频播放窗口等。 - 槽函数
on_btnOpen
是连接按钮的槽函数.
widget.cpp 主窗口源文件
#include "widget.h"
#include "QtWidgets"widget::widget(QWidget *parent): QWidget(parent)
{ui.setupUi(this);QVBoxLayout* pVLayMain = new QVBoxLayout(this);QHBoxLayout* pHLay1 = new QHBoxLayout(this);m_output = new QVideoWidget(this);//用来播放视频的窗口QPushButton* pBtnOpen = new QPushButton(this);m_output->setMinimumSize(600, 400);pBtnOpen->setFixedSize(80, 40);pBtnOpen->setText("打开视频");pHLay1->addStretch();pHLay1->addWidget(pBtnOpen);pHLay1->addStretch();pVLayMain->addWidget(m_output);pVLayMain->addLayout(pHLay1);connect(pBtnOpen, &QPushButton::clicked, this, &widget::on_btnOpen);
}widget::~widget()
{}void widget::on_btnOpen() {QString filename = QFileDialog::getOpenFileName(this, "请选择视频文件", "D:/", "视频文件(*.mp4 *.flv);;所有文件(*.*);;");//this父窗口,对话框标题,默认打开目录,文件类型过滤器用;;分开if (filename.isEmpty())return;QAudioOutput* audioOutput = new QAudioOutput(this);//音频QMediaPlayer* pPlayer = new QMediaPlayer(this);//视频pPlayer->setAudioOutput(audioOutput);//设置音频pPlayer->setSource(QUrl::fromLocalFile(filename));//设置视频pPlayer->setVideoOutput(m_output);//设置视频播放对象pPlayer->play();//视频播放
}
QVideoWidget
用来承载视频播放的窗口对象.QFileDialog::getOpenFileName
打开文件,返回值文件全局路径.QAudioOutput
表示音频的对象.setAudioOutput
设置音频.setSource
设置视频源路径,全局路径转化为QUrl
格式,QUrl::fromLocalFile(filename)
.setVideoOutput
设置视频播放的窗口对象.play
视频开始播放.
更新QT模块步骤
首先找到这个文件夹,里面有MaintenanceTool.exe
应用的QT文件夹.
然后在这个文件夹中打开cmd命令行.
命令行输入以下代码
MaintenanceTool.exe --mirror https://mirrors.ustc.edu.cn/qtproject
如果系统不让你添加组件,强制要求你更新组件的话,你更新完组件之后重新启动就可以添加组件了.
结尾
最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。
同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。
谢谢您的支持,期待与您在下一篇文章中再次相遇!