1.功能
选择路径下的固定视频格式文件播放,对应的音频和视频同步播放
2.新建一个不含UI界面的QT工程
特别注意:QT中的路径名不能含中文
设置一个不含UI界面的工程
取消构建目录
因为要引入视频播放器的模块,我们在pro中引入对应的模块
因为要引入布局格式,所以我们引入水平布局和垂直布局,对应的.h中引入以下两个头文件
同样的,我们要引入视频播放的头文件,需要在pro中引入对应的模块,然后添加对应的头文件
将需要播放声音的头文件引入
#include
一切准备就绪,开始视频播放器的设置
–》创建对象。然后在.cpp中的构造函数内进行对象的初始化
剩下的步骤在代码中进行中文注释:
.h文件
#ifndef WIDGET_H#define WIDGET_H#include #include //水平布局#include //垂直布局#include //显示视频#include //播放声音#include //按钮#include //滑动条#include //设置图标#include //选择文件/文件夹class Widget : public QWidget{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();public slots:void chooseVideo();private:QMediaPlayer *mediaPlayer;QVideoWidget *videoWidget;QVBoxLayout *vbox;//创建按钮的两个对象:选择视频按钮和开始播放按钮QPushButton *chooseBtn,*playBtn;//创建进度条/滑块的对象QSlider *slider;};#endif // WIDGET_H
.cpp
#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent){//对象实例化this->mediaPlayer = new QMediaPlayer(this);this->videoWidget = new QVideoWidget(this);//设置播放画面的最小窗口this->videoWidget->setMinimumSize(400,400);//实例化整个窗口的布局---垂直布局this->vbox = new QVBoxLayout(this);this->setLayout(this->vbox);//实例化需要的控件--选择视频按钮this->chooseBtn = new QPushButton("选择视频",this);//实例化需要的控件--播放按钮--设置图标代替文字this->playBtn = new QPushButton(this);this->playBtn->setIcon(this->style()->standardIcon(QStyle::SP_MediaPlay));//实例化需要的控件--滑块/进度条this->slider = new QSlider(this);//默认的进度条布局为垂直的,我们修改为水平方向this->slider->setOrientation(Qt::Horizontal);//实例化一个水平布局,将以上空间放在水平布局内QHBoxLayout *hbox = new QHBoxLayout;//给水平布局添加控件---顺序固定,依次放置选择视频按钮、播放按钮、进度条hbox->addWidget(this->chooseBtn);hbox->addWidget(this->playBtn);hbox->addWidget(this->slider);//将播放窗口和水平布局都添加到垂直布局中this->vbox->addWidget(this->videoWidget);this->vbox->addLayout(hbox);//布局中添加布局,addLayout();//将选择视频对应的按钮和槽函数进行关联connect(this->chooseBtn,SIGNAL(clicked()),this,SLOT(chooseVideo()));}Widget::~Widget(){}//选择视频的槽函数void Widget::chooseVideo(){//选择视频,返回一个播放视频的名字QString name = QFileDialog::getSaveFileName(this,"选择视频",".","WMV(*.wmv)");//设置媒体的声音this->mediaPlayer->setMedia(QUrl(name));//输出视频画面this->mediaPlayer->setVideoOutput(this->videoWidget);//播放this->mediaPlayer->play();}
.pro
#-------------------------------------------------## Project created by QtCreator 2022-12-11T15:14:38##-------------------------------------------------QT += core gui multimedia multimediawidgetsgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = day4_videoPlayerTEMPLATE = app# The following define makes your compiler emit warnings if you use# any feature of Qt which has been marked as deprecated (the exact warnings# depend on your compiler). Please consult the documentation of the# deprecated API in order to know how to port your code away from it.DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if you use deprecated APIs.# In order to do so, uncomment the following line.# You can also select to disable deprecated APIs only up to a certain version of Qt.#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000# disables all the APIs deprecated before Qt 6.0.0CONFIG += c++11SOURCES += \main.cpp \widget.cppHEADERS += \widget.h# Default rules for deployment.qnx: target.path = /tmp/$${TARGET}/binelse: unix:!android: target.path = /opt/$${TARGET}/bin!isEmpty(target.path): INSTALLS += target
最终的视频播放器(简单版)样式如下
————————————————————————————————————————————end
留给读者的问题:
1.在视频播放器中添加声音设置;
2.添加滑动条拖动改变播放对应的进度;
3.将目录下的视频放置在界面中,通过双击实现视频的选择播放;
….
QT中的类特别多,牢记QT三大护法,对UI界面的绘制和非UI界面的绘制要熟悉,记不住没关系,一定要会找,通过库中的用法去定位自己需要实现的功能,找到对应的类和函数以及其中的枚举,读者在学习时切记要多查阅,多自己实现,QT虽然为我们封装了很多类,如何灵活使用是关键!
加油