QwtPlotZoomer

#include <qwt_plot_zoomer.h>
#include <qwt_plot_panner.h>
#include <qwt_plot_magnifier.h>
 
 QwtPlotZoomer *zoomer = new QwtPlotZoomer( canvas );                     //选择图形局部放大
 zoomer->setRubberBandPen( QColor( Qt::blue ) ); //勾选扩大区域边界颜色
 zoomer->setMousePattern( QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier );//ctrl+右键==回复到原始状态 
 zoomer->setMousePattern( QwtEventPattern::MouseSelect3, Qt::RightButton );       //右键==恢复到上一次扩大之前的状态
 
 QwtPlotPanner *panner = new QwtPlotPanner( canvas );                                   //默认的左键移动功能
 panner->setMouseButton( Qt::RightButton );        //设置哪个按钮移动画布  如果不设置(注册掉当前行)按钮默认为左键为移动

 QwtPlotMagnifier magnifier = new QwtPlotMagnifier( canvas );                 //默认的滑轮及右键缩放功能  图形的整体缩放
 magnifier->setMouseButton(Qt::LeftButton);     //设置哪个按钮与滑轮为缩放画布  如果不设置(注册掉当前行)按钮默认为滑轮以及右键为缩放
    
       对于移动以及图形的整体缩放,通过void setMouseButton( Qt::MouseButton, Qt::KeyboardModifiers = Qt::NoModifier );便能修改自己对应功能的按钮。
       对于图形局部放大,也是通过设置setMouseButton,但是参数有所不同,void setMousePattern( MousePatternCode, Qt::MouseButton
 button, Qt::KeyboardModifiers = Qt::NoModifier );对于第一个参数,由对应的文档可知,有MousePatternCode是枚举型,有7个可选值,其中6
MouseSelect1-6,是设置鼠标模型值。Qwt例子中局部放大(左键放大,右键还原上一级图形,ctrl+右键还原原始图形),是通过设置2,3.。具体的含义
可能由于自己英文水平有限,在文档中没有找到,采用了最笨的方法进行了测试,得到1-3对应的功能,但是4-6却没有能够知道其作用,如果有知道的
朋友,麻烦告诉一下,在此先谢过。

模式一 //默认右键恢复原样···放大的方式可以自定义
zoomer->setMousePattern( QwtEventPattern::MouseSelect1, Qt::LeftButton, Qt::ControlModifier );//crtl+左键 放大   右键恢复原样 
zoomer->setMousePattern( QwtEventPattern::MouseSelect1, Qt::RightButton, Qt::ControlModifier );//ctrl+右键 放大 右键恢复原样
zoomer->setMousePattern( QwtEventPattern::MouseSelect1, Qt::LeftButton );   //左键放大  右键恢复原样
zoomer->setMousePattern( QwtEventPattern::MouseSelect1, Qt::RightButton );  //右键放大与恢复重叠 不推荐使用
 
模式二 //默认左键放大···恢复原样的方式可以自定义
    zoomer->setMousePattern( QwtEventPattern::MouseSelect2, Qt::LeftButton, Qt::ControlModifier );//左键 放大    ctrl+左键恢复  
    zoomer->setMousePattern( QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier );//左键 放大   ctrl+右键恢复原样
    zoomer->setMousePattern( QwtEventPattern::MouseSelect2, Qt::LeftButton );//左键放大与左键恢复重叠 不推荐使用
    zoomer->setMousePattern( QwtEventPattern::MouseSelect2, Qt::RightButton );//左键放大    右键恢复原样


模式三 //默认左键放大、右键恢复原样···恢复上一级原样可以自方式定义
    zoomer->setMousePattern( QwtEventPattern::MouseSelect3, Qt::LeftButton, Qt::ControlModifier );//左键 放大   右键恢复原样 ctrl+左键恢复上一级原样   
    zoomer->setMousePattern( QwtEventPattern::MouseSelect3, Qt::RightButton, Qt::ControlModifier );//左键 放大  右键恢复原样 ctrl+右键恢复上一级原样
    zoomer->setMousePattern( QwtEventPattern::MouseSelect3, Qt::LeftButton );//左键放大与左键恢复重叠 不推荐使用
    zoomer->setMousePattern( QwtEventPattern::MouseSelect3, Qt::RightButton );//左键放大    右键恢复原样与恢复上一级原样重叠· 右键恢复原样覆盖恢复上一级原样
Comments
Write a Comment