QMPlayer
Qt实现的视频播放器界面Demo。
1、实现功能
- 基于QMWidget的自定义窗口;
- 增加侧边栏模块;
- 增加播放控制栏模块,包含播放停止、上一集、下一集、视频时间、音量控制、设置功能按键样式;
- 增加进度条模块,可跳转到鼠标点击位置;
- 通过QPropertyAnimation实现侧边栏、进度条、控制栏打开关闭动画效果;
- 实现双击全屏显示、还原效果。
2、演示
3、动画效果代码
#include "controlbar.h"
#include "ui_controlbar.h"
#include <qdebug.h>
#include <qpropertyanimation.h>
#include <QStyle>
ControlBar::ControlBar(QWidget *parent) :
QWidget(parent),
ui(new Ui::ControlBar)
{
ui->setupUi(this);
m_paShow = new QPropertyAnimation(this, "pos");
m_paShow->setDuration(500);
connect(m_paShow, &QPropertyAnimation::finished, this, &ControlBar::on_finished);
}
ControlBar::~ControlBar()
{
delete ui;
}
void ControlBar::show()
{
QWidget::show();
int y = this->parentWidget()->height() - this->height() - 20;
m_paShow->setStartValue(QPoint(this->x(), this->parentWidget()->height()));
m_paShow->setEndValue(QPoint(this->x(), y));
m_paShow->setEasingCurve(QEasingCurve::OutQuad);
m_paShow->start();
}
void ControlBar::hide()
{
int y = this->parentWidget()->height() - this->height() - 20;
m_paShow->setStartValue(QPoint(this->x(), y));
m_paShow->setEndValue(QPoint(this->x(), this->parentWidget()->height()));
m_paShow->setEasingCurve(QEasingCurve::Linear);
m_paShow->start();
}
void ControlBar::on_finished()
{
if(m_paShow->endValue().toPoint().y() == this->parentWidget()->height())
{
QWidget::hide();
}
}
void ControlBar::on_but_play_clicked()
{
if(m_play)
{
}
else
{
}
m_play = !m_play;
ui->but_play->setProperty("play", m_play);
ui->but_play->style()->polish(ui->but_play);
}
void ControlBar::on_but_volume_clicked()
{
m_volume = !m_volume;
ui->but_volume->setProperty("setup", m_volume);
ui->but_volume->style()->polish(ui->but_volume);
}
4、源代码
gitee github
|