- #include "mainwindow.h"
- #include "ui_mainwindow.h"
-
- #include
-
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
-
- player = new QMediaPlayer(this); //创建视频播放器
- QAudioOutput *audioOutput= new QAudioOutput(this);
- player->setAudioOutput(audioOutput); //设置音频输出通道
- player->setVideoOutput(ui->videoWidget); //设置视频显示组件
-
- ui->videoWidget->setMediaPlayer(player);//设置显示组件的关联播放器
-
- connect(player,&QMediaPlayer::playbackStateChanged,this, &MainWindow::do_stateChanged);
-
- connect(player,&QMediaPlayer::positionChanged,this, &MainWindow::do_positionChanged);
-
- connect(player,&QMediaPlayer::durationChanged,this, &MainWindow::do_durationChanged);
- }
-
- MainWindow::~MainWindow()
- {
- delete ui;
- }
-
- void MainWindow::do_stateChanged(QMediaPlayer::PlaybackState state)
- {//播放器状态变化
- bool isPlaying = (state==QMediaPlayer::PlayingState);
- ui->btnPlay->setEnabled(!isPlaying);
- ui->btnPause->setEnabled(isPlaying);
- ui->btnStop->setEnabled(isPlaying);
- }
-
- void MainWindow::do_durationChanged(qint64 duration)
- {//文件时长变化
- ui->sliderPosition->setMaximum(duration);
-
- int secs=duration/1000; //秒
- int mins=secs/60; //分钟
- secs=secs % 60; //余数秒
- durationTime=QString::asprintf("%d:%d",mins,secs);
- ui->LabRatio->setText(positionTime+"/"+durationTime);
- }
-
- void MainWindow::do_positionChanged(qint64 position)
- {//文件播放位置变化
- if (ui->sliderPosition->isSliderDown())
- return; //如果正在拖动滑条,退出
- ui->sliderPosition->setSliderPosition(position);
- int secs=position/1000; //秒
- int mins=secs/60; //分钟
- secs=secs % 60; //余数秒
- positionTime=QString::asprintf("%d:%d",mins,secs);
- ui->LabRatio->setText(positionTime+"/"+durationTime);
- }
-
- void MainWindow::on_btnAdd_clicked()
- {//打开文件
- QString curPath=QDir::homePath();
- QString dlgTitle="选择视频文件";
- QString filter="视频文件(*.wmv, *.mp4);;所有文件(*.*)";
- QString aFile=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);
-
- if (aFile.isEmpty())
- return;
-
- QFileInfo fileInfo(aFile);
- ui->labCurMedia->setText(fileInfo.fileName());
-
- player->setSource(QUrl::fromLocalFile(aFile)); //设置播放文件
- player->play();
- }
-
- void MainWindow::on_btnPlay_clicked()
- {//播放
- player->play();
- }
-
- void MainWindow::on_btnPause_clicked()
- {//暂停
- player->pause();
- }
-
- void MainWindow::on_btnStop_clicked()
- {//停止
- player->stop();
- }
-
- void MainWindow::on_sliderVolumn_valueChanged(int value)
- {//调节音量
- player->audioOutput()->setVolume(value/100.0);
- }
-
- void MainWindow::on_btnSound_clicked()
- {//静音按钮
- bool mute=player->audioOutput()->isMuted();
- player->audioOutput()->setMuted(!mute);
- if (mute)
- ui->btnSound->setIcon(QIcon(":/images/images/volumn.bmp"));
- else
- ui->btnSound->setIcon(QIcon(":/images/images/mute.bmp"));
- }
-
- void MainWindow::on_sliderPosition_valueChanged(int value)
- {//播放位置
- player->setPosition(value);
- }
-
- void MainWindow::on_pushButton_clicked()
- {//全屏按钮
- ui->videoWidget->setFullScreen(true);
- }
这是一个使用Qt框架编写的视频播放器应用程序,它具有以下功能:
QMediaPlayer
对象作为视频播放器,并设置了音频输出通道和视频显示组件。connect
函数将播放器的状态变化、文件时长变化和文件播放位置变化与相应的槽函数连接起来。on_btnAdd_clicked
槽函数响应“打开文件”按钮的点击事件,弹出文件选择对话框,选择视频文件后,设置播放器的播放源并开始播放。on_btnPlay_clicked
、on_btnPause_clicked
和on_btnStop_clicked
分别响应“播放”、“暂停”和“停止”按钮的点击事件,调用播放器的相应方法进行播放、暂停和停止操作。on_sliderVolumn_valueChanged
槽函数响应音量滑动条的值变化事件,根据滑动条的值调节音量。on_btnSound_clicked
槽函数响应静音按钮的点击事件,切换静音状态并更新按钮图标。on_sliderPosition_valueChanged
槽函数响应播放位置滑动条的值变化事件,根据滑动条的值调整播放位置。on_pushButton_clicked
槽函数响应全屏按钮的点击事件,将视频显示组件设置为全屏显示。该代码需要与Qt框架一起使用,可以在Qt开发环境中进行编译和运行。它实现了基本的视频播放器功能,用户可以选择视频文件并进行播放、暂停、停止操作,调节音量和播放位置,以及全屏显示。