QwtPlotZoomer* zoomer = new MyZoomer(canvas()); zoomer->setMousePattern(QwtEventPattern::MouseSelect2,Qt::RightButton, Qt::ControlModifier); zoomer->setMousePattern(QwtEventPattern::MouseSelect3,Qt::RightButton); QwtPlotPanner *panner = new QwtPlotPanner(canvas()); panner->setAxisEnabled(QwtPlot::yRight, false); panner->setMouseButton(Qt::MidButton); // Avoid jumping when labels with more/less digits // appear/disappear when scrolling vertically const QFontMetrics fm(axisWidget(QwtPlot::yLeft)->font()); QwtScaleDraw *sd = axisScaleDraw(QwtPlot::yLeft); sd->setMinimumExtent( fm.width("10.0") ); const QColor c(Qt::darkBlue); zoomer->setRubberBandPen(c); zoomer->setTrackerPen(c);
class MyZoomer: public QwtPlotZoomer{public: MyZoomer(QwtPlotCanvas *canvas):QwtPlotZoomer(canvas) { setTrackerMode(AlwaysOn); } virtual QwtText trackerText(const QwtDoublePoint &pos) const { QColor bg(Qt::white); bg.setAlpha(200); QwtText text = QwtPlotZoomer::trackerText(pos); text.setBackgroundBrush( QBrush( bg )); return text; }};
/*! \brief Event filter When isEnabled() == true all events of the observed widget are filtered. Mouse and keyboard events are translated into widgetMouse- and widgetKey- and widgetWheel-events. Paint and Resize events are handled to keep rubberband and tracker up to date. \sa event(), widgetMousePressEvent(), widgetMouseReleaseEvent(), widgetMouseDoubleClickEvent(), widgetMouseMoveEvent(), widgetWheelEvent(), widgetKeyPressEvent(), widgetKeyReleaseEvent()*/bool QwtPicker::eventFilter(QObject *o, QEvent *e){ if ( o && o == parentWidget() ) { switch(e->type()) { case QEvent::Resize: { const QResizeEvent *re = (QResizeEvent *)e; if ( d_data->resizeMode == Stretch ) stretchSelection(re->oldSize(), re->size()); if ( d_data->rubberBandWidget ) d_data->rubberBandWidget->resize(re->size()); if ( d_data->trackerWidget ) d_data->trackerWidget->resize(re->size()); break; } case QEvent::Leave: widgetLeaveEvent(e); break; case QEvent::MouseButtonPress: widgetMousePressEvent((QMouseEvent *)e); break; case QEvent::MouseButtonRelease: widgetMouseReleaseEvent((QMouseEvent *)e); break; case QEvent::MouseButtonDblClick: widgetMouseDoubleClickEvent((QMouseEvent *)e); break; case QEvent::MouseMove: widgetMouseMoveEvent((QMouseEvent *)e); break; case QEvent::KeyPress: widgetKeyPressEvent((QKeyEvent *)e); break; case QEvent::KeyRelease: widgetKeyReleaseEvent((QKeyEvent *)e); break; case QEvent::Wheel: widgetWheelEvent((QWheelEvent *)e); break; default: break; } } return false;}