FFmpeg开发(九)——Qt视频播放器之快进滑动条(参考了暴风影音、迅雷影音)
上一篇介绍了使用多线程
FFmpeg开发(八)——Qt视频播放器之多线程的使用(参考了暴风影音、迅雷影音)
本播放器系列相关的文章链接大家可以参考如下:
FFmpeg开发(四)——Qt实现一个视频播放器(参考了暴风影音、迅雷影音)
FFmpeg开发(五)——Qt视频播放器之封装FFmpeg类(参考了暴风影音、迅雷影音)
FFmpeg开发(六)——Qt视频播放器之封装音频类(参考了暴风影音、迅雷影音)
FFmpeg开发(七)——Qt视频播放器之播放列表类(参考了暴风影音、迅雷影音)
FFmpeg开发(八)——Qt视频播放器之多线程的使用(参考了暴风影音、迅雷影音)
FFmpeg开发(九)——Qt视频播放器之快进滑动条(参考了暴风影音、迅雷影音)
实现的额效果如下:
本篇写一下滑动条的实现,播放快进滑动条和音量控制滑动条都是重写了QSlider类,主要就是对QSlider进行QSS美化。
#include <QObject>
#include <QWidget>
#include <QSlider>
#include <QMouseEvent>
class MidPlaySlider : public QSlider
{
Q_OBJECT
public:
MidPlaySlider(QWidget *parent = 0);
~MidPlaySlider();
protected:
void mousePressEvent(QMouseEvent *ev);//鼠标按下事件
private:
void initData();
private:
};
#include "midplayslider.h"
MidPlaySlider::MidPlaySlider(QWidget *parent):QSlider(parent)
{
initData();
}
MidPlaySlider::~MidPlaySlider()
{
}
//鼠标按下事件
void MidPlaySlider::mousePressEvent(QMouseEvent *ev)
{
double pos = (double)ev->pos().x() / (double)width();//当前鼠标位置比率
setValue(pos*this->maximum());//设置位置
QSlider::mousePressEvent(ev);
}
void MidPlaySlider::initData()
{
setOrientation(Qt::Horizontal);
//setFixedHeight(15);
setStyleSheet(
"QSlider{background-color: transparent;}"
"QSlider::groove:horizontal {border: 0px solid #09A1FF;\
background: #09A1FF;\
height: 3px;\
border-radius: 6px;\
padding-left:0px;\
padding-right:0px;\
left:1px;right:0px;\
}"
"QSlider::sub-page:horizontal {\
background: #09A1FF;\
border: 1px solid #09A1FF;\
height: 3px;\
border-radius: 3px;\
}"
"QSlider::add-page:horizontal {\
background: #696969;\
border: 0px solid #696969;\
height: 3px;\
border-radius: 3px;\
}"
"QSlider::handle:horizontal {\
background:#FFFFFF;\
width: 12px;height 12px;\
margin-top: -5px;\
margin-bottom: -5px;\
border-radius: 6px;\
}");
}
下一篇文章:
FFmpeg开发(十)——Qt 实现FFmpeg下载m3u8视频
本文原创作者:冯一川(ifeng12358@163.com),未经作者授权同意,请勿转载。