#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置主界面背景
QPixmap pixmap(":/images/bg.PNG");
QPalette palette;
//QImage image(":/images/bg.PNG");
//QImage imageBack=image.scaled(this->width(),this->height(),Qt::IgnoreAspectRatio);
QPixmap back = pixmap.scaled(this->width(),this->height(),Qt::IgnoreAspectRatio);
palette.setBrush(backgroundRole(),QBrush(back));//设置笔刷的位置和要填充的图片
//pal.setBrush(QPalette::Window,QBrush(pixmap.scaled(event->size(), Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
setPalette(palette);
//创建mediaplayer
mediaPlayer = new QMediaPlayer(this);
//设置对应的mediaplayer的QVideoWidget 指的是播放窗口
mediaPlayer->setVideoOutput(ui->widget);//widgetn已经被提升为QVideoWidget
//设置播放属性
//1)监听信号变化
connect(mediaPlayer, SIGNAL(stateChanged(QMediaPlayer::State)),this,SLOT(mediaStateChanged(QMediaPlayer::State)));
//2)播放进度信号变化
connect(mediaPlayer,SIGNAL(positionChanged(qint64)),this,SLOT(positionChanged(qint64)));
//3)媒体播放长度信号变化
connect(mediaPlayer,SIGNAL(durationChanged(qint64)),this,SLOT(durationChange(qint64)));
//4)设置播放错误关联
connect(mediaPlayer,SIGNAL(error(QMediaPlayer::Error)),this,SLOT(handleError()));
//设置播放按钮
//设置按钮提示信息
ui->toolButton->setToolTip("播放视频");
//设置按钮的点击状态
//设置按钮的背景图片
ui->toolButton->setIcon(QPixmap(":/images/play.png"));
//在UI片的IconSize修改按钮大小
ui->buttonOpenFile->setAutoRaise(true);
ui->buttonOpenFile->setIcon(QPixmap(":/images/openfile.png"));
}
MainWindow::~MainWindow()
{
delete ui;
}
//播放
void MainWindow::play()
{
//获取播放状态
switch (mediaPlayer->state()) {
case QMediaPlayer::PlayingState:
//如是在播放中,就暂停播放
mediaPlayer->pause();
break;
default:
mediaPlayer->play();
break;
}
}
//播放状态
void MainWindow::mediaStateChanged(QMediaPlayer::State state)
{
//MediaPlayer播放过程序台动态调整播放进度
switch (state) {
case QMediaPlayer::PlayingState:
ui->toolButton->setToolTip("暂停");
ui->toolButton->setIcon(QPixmap(":/images/pause.png"));
break;
default:
ui->toolButton->setToolTip("播放");
ui->toolButton->setIcon(QPixmap(":/images/play.png"));
break;
}
}
//改变播放的位置
void MainWindow::positionChanged(qint64 position)
{
//改变播放位置
ui->horizontalSlider->setValue(position);
}
//获取播放的位置
void MainWindow::setPosition(int position)
{
//获取MediaPlayer进度条调整位置
mediaPlayer->setPosition(position);
}
void MainWindow::durationChange(qint64 duration)
{
//设置进度条的范围
ui->horizontalSlider->setRange(0,duration);
}
void MainWindow::handleError()
{
ui->toolButton->setEnabled(false);
QMessageBox::warning(this,"错误","此文件无法播放!无法支持的文件格式!");
return;
}
void MainWindow::on_toolButton_clicked()
{
play();
//设置播放按钮暂停样式
// ui->toolButton->setToolTip("暂停");
// ui->toolButton->setIcon(QPixmap(":/images/pause.png"));
}
void MainWindow::on_horizontalSlider_sliderMoved(int position)
{
//播放进度条移动的地方,需要绑定一下事件
setPosition(position);
}
void MainWindow::on_buttonOpenFile_clicked()
{
QString filename = QFileDialog::getOpenFileName();
//设置播放内容
mediaPlayer->setMedia(QUrl::fromLocalFile(filename));
ui->toolButton->setAutoRaise(true);
}
评论0