/** * 叶海辉 * QQ群121376426 * http://blog.yundiantech.com/ */ #include "VideoSlider.h" #include #include #include #include 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()<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()<getWidget()->hasFocus(); // qDebug()<getWidget()->geometry()<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()<getTotalTime(); // videoThread->seek(value); }