123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- /**
- * 叶海辉
- * QQ群121376426
- * http://blog.yundiantech.com/
- */
- #include "VideoSlider.h"
- #include <QDebug>
- #include <QTimer>
- #include <QResizeEvent>
- #include <QStyle>
- VideoSlider::VideoSlider(QWidget *parent) :
- QSlider(parent)
- {
- setMouseTracking(true);
- this->setOrientation(Qt::Horizontal);
- isSliderMoving = false;
- m_timer = new QTimer;
- m_timer->setInterval(100);
- connect(m_timer,SIGNAL(timeout()),this,SLOT(slotTimerTimeOut()));
- m_timer_mousemove = new QTimer;
- m_timer_mousemove->setInterval(100);
- connect(m_timer_mousemove,SIGNAL(timeout()),this,SLOT(slotMousemoveTimerTimeOut()));
- }
- VideoSlider::~VideoSlider()
- {
- }
- void VideoSlider::resizeEvent(QResizeEvent *event)
- {
- // qDebug()<<"void MySlider::resizeEvent(QResizeEvent *event)";
- }
- void VideoSlider::mousePressEvent(QMouseEvent *event)
- {
- // isSliderMoving = true;
- int posX = event->pos().x();
- int w = this->width();
- // qint64 value = posX*1.0/w * this->maximum();
- int value = QStyle::sliderValueFromPosition(minimum(), maximum(), event->pos().x(), width());
- setValue(value);
- // qDebug()<<value<<maximum();
- emit sig_valueChanged(value);
- // emit valueChanged(value);
- // QSlider::mousePressEvent(event);
- }
- void VideoSlider::mouseMoveEvent(QMouseEvent *event)
- {
- // qDebug()<<"void MySlider::mouseMoveEvent(QMouseEvent *event)"<<event->pos();
- // if (isSliderMoving)
- // {
- // m_timer->stop();
- // videoThread->hideIn();
- // }
- // else
- // {
- // m_posX = event->pos().x();
- // m_timer_mousemove->stop();
- // m_timer_mousemove->start();
- // }
- m_posX = event->pos().x();
- m_timer_mousemove->stop();
- m_timer_mousemove->start();
- QSlider::mouseMoveEvent(event);
- }
- void VideoSlider::mouseReleaseEvent(QMouseEvent *event)
- {
- // emit sig_valueChanged(this->value());
- // isSliderMoving = false;
- // QSlider::mouseReleaseEvent(event);
- }
- void VideoSlider::enterEvent(QEvent *)
- {
- m_timer->stop();
- }
- void VideoSlider::leaveEvent(QEvent *)
- {
- m_timer_mousemove->stop();
- m_timer->start();
- }
- bool VideoSlider::seek()
- {
- return true;
- }
- void VideoSlider::setValue(int value)
- {
- if (!isSliderMoving)
- QSlider::setValue(value);
- }
- //void VideoSlider::setCutMode()
- //{
- // videoThread->setCutMode();
- // connect(videoThread,SIGNAL(sig_setStart(qint64)),this,SIGNAL(sig_setStart(qint64)));
- // connect(videoThread,SIGNAL(sig_setEnd(qint64)),this,SIGNAL(sig_setEnd(qint64)));
- //}
- bool VideoSlider::openFile(char*fileName)
- {
- // videoThread->openFile(fileName);
- return true;
- }
- bool VideoSlider::closeFile()
- {
- return 0;
- }
- //void VideoSliderView::slotTotalTimeChanged(qint64 uSec)
- //{
- // setRange(0,uSec);
- //}
- void VideoSlider::slotTimerTimeOut()
- {
- // qDebug()<<videoThread->getWidget()->hasFocus();
- // qDebug()<<videoThread->getWidget()->geometry()<<QCursor::pos()<<videoThread->getWidget()->geometry().contains(QCursor::pos());
- // if (!videoThread->getWidget()->geometry().contains(QCursor::pos()))
- // {
- // m_timer->stop();
- //// videoThread->hideIn();
- // }
- }
- void VideoSlider::slotMousemoveTimerTimeOut()
- {
- m_timer_mousemove->stop();
- int w = this->width();
- // qint64 value = m_posX*1.0/w*videoThread->getTotalTime();
- // this->setValue(value);
- QPoint point = this->mapToGlobal(QPoint(0,0));
- int width = this->width();
- if (parent() != NULL)
- {
- QWidget *widget = (QWidget *)this->parent();
- point = widget->mapToGlobal(QPoint(0,0));
- width = widget->width();
- }
- // videoThread->showOut(point,width);
- //// qDebug()<<value<<videoThread->getTotalTime();
- // videoThread->seek(value);
- }
|