Qwt中的鼠标操作之缩放、平移
来源:互联网 发布:西安传智java培训 编辑:程序博客网 时间:2024/05/16 17:52
由于项目需要绘图,所以采取了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自定义右键为恢复上一级模式的方
式,所以在实际绘图的时候,针对局部放大时,可以根据自己的需要进行修改。
- Qwt中的鼠标操作之缩放、平移
- Qwt中的鼠标操作之缩放、平移
- Qwt中的鼠标操作之缩放、平移
- qwt绘制,以及画面缩放、平移操作
- Qwt源码解读之平移操作类
- Qwt源码解读之缩放操作类
- Qwt源码解读之平移操作类——QwtPanner and QwtPlotPanner
- OpenGL中的平移旋转缩放
- OpenGL之旋转、平移、缩放
- qwt缩放
- Qwt源码解读之缩放操作类——QwtMagnifier and QwtPlotMagnifier
- 测试程序:平移缩放旋转操作
- ios-矩阵旋转缩放平移操作
- 三维空间中的几何变换-平移旋转缩放
- HTML中的旋转 扭曲 平移 缩放
- ios-day14-03(Quartz 2D之矩阵操作——旋转、平移、缩放)
- 自学QT之图片操作(缩放、平移、扭曲和旋转等)
- 七 iOS之 矩阵操作(图形上下文的平移、缩放、旋转)
- selenium server运行报错
- mybatis入门基础(七)----延迟加载
- java排序算法
- Alpine Linux 使用简介
- Linux学习笔记一
- Qwt中的鼠标操作之缩放、平移
- python正则表达式
- Java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/jvm/internal/Intrinsics解决方法
- 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
- android设置启动页的正确姿势
- maven项目部署到tomcat的小小设置
- hdu2020 绝对值排序(C语言)
- keepalived
- Spring学习笔记-IOC