class DirectSlider : public QSlider
{
public:
-DirectSlider( QWidget *_parent ) : QSlider( _parent ) {};
-DirectSlider( Qt::Orientation q,QWidget *_parent ) : QSlider( q,_parent )
+ DirectSlider( QWidget *_parent ) : QSlider( _parent ) {};
+ DirectSlider( Qt::Orientation q,QWidget *_parent ) : QSlider( q,_parent )
{};
virtual ~DirectSlider() {};
void mousePressEvent(QMouseEvent* event)
{
- if(event->button() == Qt::LeftButton)
+ if( event->button() != Qt::LeftButton && event->button() != Qt::MidButton )
{
-#ifdef WIN32
- int width1 = qobject_cast<QWidget*>(parent())->sizeHint().width() -
- 2 * qobject_cast<QWidget*>(parent())->layout()->margin();
-#else
- int width1 = width();
-#endif
- int pos = (int)(minimum() +
- (double)(event->x())/width1*(maximum()-minimum()) );
- setSliderPosition( pos );
- QSlider::mousePressEvent(event);
+ QSlider::mousePressEvent( event );
+ return;
}
+
+ QMouseEvent newEvent( event->type(), event->pos(), event->globalPos(),
+ Qt::MouseButton( event->button() ^ Qt::LeftButton ^ Qt::MidButton ),
+ Qt::MouseButtons( event->buttons() ^ Qt::LeftButton ^ Qt::MidButton ),
+ event->modifiers() );
+ QSlider::mousePressEvent( &newEvent );
}
};
#endif