效果展示
- 下面有一个按钮打开视频,点击按钮之后会出现一个弹窗选择文件,默认打开的是D盘,并且选择的文件的类型有.mp4 .flv或者所有文件。
- 选择正确的视频文件之后可以正常播放视频。
widget.h 主窗口头文件
cpp
#pragma once
#include <QtWidgets/QWidget>
#include <QtMultimediaWidgets>
#include "ui_widget.h"
class widget : public QWidget
{
Q_OBJECT
public:
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 主窗口源文件
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
如果系统不让你添加组件,强制要求你更新组件的话,你更新完组件之后重新启动就可以添加组件了.
结尾
最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。
同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。
谢谢您的支持,期待与您在下一篇文章中再次相遇!