1.我們需要的頭文件
2. .cpp文件
#include "videowin.h"
#include "ui_videowin.h"
#include <QFileDialog>
#include <QTime>
#include <QMessageBox>
#include <QFont>
videowin::videowin(QWidget *parent) :
QWidget(parent),
ui(new Ui::videowin)
{
m_pWidget = new QWidget(this);
m_pWidget->setGeometry(0, 0, 1152, 616);
QPalette pal(m_pWidget->palette());
//設置背景黑色
pal.setColor(QPalette::Background, Qt::black);
m_pWidget->setAutoFillBackground(true);
m_pWidget->setPalette(pal);
m_pWidget->show();
ui->setupUi(this);
this->setWindowIcon(QIcon(":/icon_video/video.png"));
this->setWindowTitle("大魚播放器");
this->i = 0;
this->n = 0;
this->j = 0;
ui->verticalSlider->hide();
ui->listWidget->hide();
//this->player->setVolume(position);
this->videoWidget = new QVideoWidget(this);
this->videoWidget->setGeometry(50,40,720,470);//播放視頻大小位置
this->player = new QMediaPlayer(this);
this->ui->label->setText("00:00/00:00");//顯示時間的
this->ui->label->setStyleSheet("color:white");
this->ui->label_2->setStyleSheet("color:white");
this->ui->label_2->setFont(QFont("阿里媽媽數黑體",16));
this->timer = new QTimer(this);//定時器
this->ui->pushButton->setIcon(this->style()->standardPixmap(QStyle::SP_MediaPlay));//給按鍵設置類型
//this->time = new QTime(this);
connect(this->ui->listWidget,SIGNAL(itemDoubleClicked(QListWidgetItem *)),this,SLOT(changeMovie(QListWidgetItem *)));
connect(this->timer,SIGNAL(timeout()),this,SLOT(updateTime_1()));
connect(this->player,SIGNAL(durationChanged(qint64)),this,SLOT(getDuration_1(qint64)));
connect(this->player,SIGNAL(positionChanged(qint64)),this,SLOT(setSliderValue(qint64)));
}
videowin::~videowin()
{
delete ui;
}
//獲取文件信息
void videowin::on_pushButton_7_clicked()
{
//this->namelist.clear();
//this->ui->listWidget->clear();
this->namelist =QFileDialog::getOpenFileNames(this,"選擇",".","WMV(*.wmv);;AVI(*.avi);;MP4(*.MP4)");
for(int i = 0;i<namelist.size();i++)
{
QFileInfo fileInfos(namelist.at(i));//獲取文件信息
QListWidgetItem *item = new QListWidgetItem(fileInfos.fileName(),this->ui->listWidget);
item->setToolTip(namelist.at(i));
this->ui->listWidget->addItem(item);
}
}
//雙擊能實現播放視頻
void videowin::changeMovie(QListWidgetItem *item)
{
this->index = this->ui->listWidget->currentRow();
//設置播放器要播放的視頻
this->player->setMedia(QUrl(item->toolTip()));
//獲取視頻名字
this->name = item->text()+" ";
this->ui->label_2->setText(this->name);
QFont ft;
ft.setPointSize(14);
this->ui->label_2->setFont(ft);
//播放
this->player->setVideoOutput(this->videoWidget);
this->player->play();
this->ui->pushButton->setIcon(this->style()->standardPixmap(QStyle::SP_MediaPause));
this->timer->start(1000);
}
//暫停鍵
void videowin::on_pushButton_clicked()
{
int state = this->player->state();//獲取播放器的狀態(tài)
if(state == QMediaPlayer::PausedState)//暫停
{
this->player->play();
this->ui->pushButton->setIcon(this->style()->standardPixmap(QStyle::SP_MediaPause));
}
else if(state == QMediaPlayer::PlayingState)//播放中
{
this->player->pause();
this->ui->pushButton->setIcon(this->style()->standardPixmap(QStyle::SP_MediaPlay));
}
}
//顯示視頻進度和時長
void videowin::updateTime_1()
{
this->n++;//時間一到,顯示名稱的一半
if(this->n == this->name.size())
{
this->n = 0;
}
this->ui->label_2->setText(this->name.mid(this->n));//顯示名稱
qint64 dur = this->player->duration();//獲取到總時長
qint64 pos = this->player->position();//獲取當前的播放位置
QTime time1(0,0,0,0),time2(0,0,0,0);//顯示:轉成 00:00
this->ui->label->setText(time1.addMSecs(pos).toString("mm:ss") +"/" +time2.addMSecs(dur).toString("mm:ss"));
}
void videowin::getDuration_1(qint64 duration)
{
qDebug()<<duration;
this->ui->horizontalSlider->setRange(0,duration);//設置進度條范圍
this->ui->horizontalSlider->setValue(0);
}
//視頻滑塊
void videowin::on_horizontalSlider_sliderMoved(int position)
{
this->player->setPosition(position);//根據滑塊的位置設置播放音樂的位置
}
//下集
void videowin::on_pushButton_2_clicked()
{
if(this->namelist.empty())
{
QMessageBox::information(this,"提示","沒有可播放的視頻");
}
else
{
this->index++;
if(this->index == this->namelist.size())
{
QMessageBox::information(this,"提示","已經是最后一個視頻了");
this->index--;
}
this->player->stop();
QFileInfo fileInfo(this->namelist.at(this->index));
this->name = fileInfo.fileName()+" ";
this->ui->label->setText(this->name);
this->player->setMedia(QUrl(this->namelist.at(this->index)));
this->player->play();
}
}
//控制音量條
void videowin::on_pushButton_4_clicked()
{
if(i == 0)
{
ui->verticalSlider->show();
i = 1;
}
else if( i == 1)
{
ui->verticalSlider->hide();
i = 0;
}
}
//調節(jié)音量
void videowin::on_verticalSlider_sliderMoved(int position)
{
this->player->setVolume(position);
}
//更新視頻滑塊
void videowin::setSliderValue(qint64 position)
{
this->ui->horizontalSlider->setValue(position);
}
//選集按鈕
void videowin::on_pushButton_5_clicked()
{
if(j == 0)
{
ui->listWidget->show();
j = 1;
}
else if( j == 1)
{
ui->listWidget->hide();
j = 0;
}
}
3.ui界面
?
?文章來源地址http://www.zghlxwxcb.cn/news/detail-521535.html文章來源:http://www.zghlxwxcb.cn/news/detail-521535.html
?
到了這里,關于QT實現視頻播放器的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!