Change mouse bindings for qwtplotzoomer
Hi
I`m creating a plot widget based on QwtPlot that has three buttons to toggle zoom-in, zoom-out, and panning/draggin (like in matlab). How can I change the mouse bindings? I have slots that are called when the different buttons are toggled. I want to set the left mouse-button to handle everything depending on which button is toggled: zoom in when zoom-in is toggled, zoom out when zoom-out is toggled, and pan/drag the plot when the pan-button is toggled. So far I`ve tried
setMousePattern(QwtEventPattern::MouseSelect3,Qt:: LeftButton); // when pan is toggled
setMousePattern(QwtEventPattern::MouseSelect2,Qt:: LeftButton); // when zoom-out is toggled
setMousePattern(QwtEventPattern::MouseSelect1,Qt:: LeftButton); // when zoom-in is toggled
but it doesn`t give me the right behaviour. I don`t want to zoom-out using right-clicks as that button is used for conext-menu. And not all mouses have a mid-button for panning...
-Ivar
Re: Change mouse bindings for qwtplotzoomer
Re: Change mouse bindings for qwtplotzoomer
Quote:
Originally Posted by
ivareske
Solved it....
Nice. Don't bother to show how, because that might help someone else with a similar problem. After all, this forum exists only to answer your questions, not to help the community as a whole.
Re: Change mouse bindings for qwtplotzoomer
Really...? I thought this forum only existed to solve my problems...
--------------------------------------------------------Zoomer.h
#ifndef ZOOMER_H
#define ZOOMER_H
#include <qwt_plot_zoomer.h>
class Zoomer: public QwtPlotZoomer{
public:
enum zoomMode{In, Out};
Zoomer(int xAxis, int yAxis, QwtPlotCanvas *canvas);
bool zoomModeEnabled( Zoomer::zoomMode mode ) const;
void enableZoomMode( Zoomer::zoomMode mode, bool enabled );
private:
bool zoomIn_;
bool zoomOut_;
};
#endif
-----------------------------------------------Zoomer.cpp
#include "Zoomer.h"
Zoomer::Zoomer(int xAxis, int yAxis, QwtPlotCanvas *canvas) : QwtPlotZoomer(xAxis, yAxis, canvas){
setSelectionFlags(QwtPicker::DragSelection | QwtPicker::CornerToCorner);
setTrackerMode(QwtPicker::AlwaysOff);
setRubberBand(QwtPicker::NoRubberBand);
// RightButton: zoom out by 1
// Ctrl+RightButton: zoom out to full size
//setMousePattern(QwtEventPattern::MouseSelect2,Qt:: RightButton, Qt::ControlModifier);
//setMousePattern(QwtEventPattern::MouseSelect3,Qt:: RightButton);
//setMousePattern(QwtEventPattern::MouseSelect2,Qt:: NoButton, Qt::ControlModifier);
//setMousePattern(QwtEventPattern::MouseSelect3,Qt:: NoButton);
setMousePattern(QwtEventPattern::MouseSelect1,Qt:: NoButton);
setMousePattern(QwtEventPattern::MouseSelect2,Qt:: NoButton);
setMousePattern(QwtEventPattern::MouseSelect3,Qt:: NoButton);
setMousePattern(QwtEventPattern::MouseSelect4,Qt:: NoButton);
setMousePattern(QwtEventPattern::MouseSelect5,Qt:: NoButton);
setMousePattern(QwtEventPattern::MouseSelect6,Qt:: NoButton);
zoomIn_ = false;
zoomOut_ = false;
}
void Zoomer::enableZoomMode( Zoomer::zoomMode mode, bool enabled ){
if( mode==Zoomer::In ){
zoomIn_ = enabled;
zoomOut_ = false;
setMousePattern(QwtEventPattern::MouseSelect3,Qt:: NoButton);
if( enabled ){
setMousePattern(QwtEventPattern::MouseSelect1,Qt:: LeftButton);
}else{
setMousePattern(QwtEventPattern::MouseSelect1,Qt:: NoButton);
}
}
if( mode==Zoomer::Out ){
zoomIn_ = false;
setMousePattern(QwtEventPattern::MouseSelect1,Qt:: NoButton);
zoomOut_ = enabled;
if( enabled ){
setMousePattern(QwtEventPattern::MouseSelect3,Qt:: LeftButton);
}else{
setMousePattern(QwtEventPattern::MouseSelect3,Qt:: NoButton);
}
}
}
bool Zoomer::zoomModeEnabled( Zoomer::zoomMode mode ) const{
if( mode==Zoomer::In ){
return zoomIn_;
}else{
return zoomOut_;
}
}
Re: Change mouse bindings for qwtplotzoomer
Please, don't argue. This code snippets help me a lot.
Re: Change mouse bindings for qwtplotzoomer
Hi ivareske,
Can you help me in below regards,
How did you add button to toggle QwtPlotZoomer on legend ?
Please reply, I'm stuck in this
Thanks