Qwt中的鼠标操作之缩放、平移

  由于项目需要绘图,所以采取了Qwt作为Qt插件,进行图形的绘制。Qwt的安装前面的博文已经解决。

       使用Qwt在Qt上绘制图形,需要用到缩放、平移等操作,通过查看Qwt自带的例子看到了如下语句:

 

 
#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 );//左键放大	右键恢复原样与恢复上一级原样重叠· 右键恢复原样覆盖恢复上一级原样



        QWT中例子 左键放大,右键恢复上一级,ctrl+原样恢复原样

 
zoomer->setMousePattern( QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier ); 
 
zoomer->setMousePattern( QwtEventPattern::MouseSelect3, Qt::RightButton ); 

 

       是一种结合的方式···使用模式2自定义恢复原样的方式,覆盖了默认的右键,然后又用模式3自定义右键为恢复上一级模式的方

式,所以在实际绘图的时候,针对局部放大时,可以根据自己的需要进行修改。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值