QWT 7.0.1
Loading...
Searching...
No Matches
Classes | Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
QwtPlotScaleEventDispatcher Class Reference

针对寄生绘图的事件过滤器,主要处理坐标轴动作 More...

#include <qwt_plot_scale_event_dispatcher.h>

Inheritance diagram for QwtPlotScaleEventDispatcher:

Classes

class  PrivateData
 

Public Slots

void updateCache ()
 更新缓存,必要时会调用rebuildCache进行重建
 
void setEnable (bool on=true)
 

Public Member Functions

 QwtPlotScaleEventDispatcher (QwtPlot *plot, QObject *par=nullptr)
 
bool isEnable () const
 

Static Public Member Functions

static QwtAxisId findAxisIdByScaleWidget (const QwtPlot *plot, const QwtScaleWidget *scaleWidget)
 获取 QwtScaleWidget 对应的轴 ID
 

Protected Member Functions

virtual bool eventFilter (QObject *obj, QEvent *e) override
 
void rebuildCache ()
 重建所有缓存数据,在有新的寄生绘图添加时,都需要调用此函数,把绘图的坐标轴缓存
 
virtual bool handleMousePress (QwtPlot *bindPlot, QMouseEvent *e)
 
virtual bool handleMouseMove (QwtPlot *bindPlot, QMouseEvent *e)
 
virtual bool handleMouseRelease (QwtPlot *bindPlot, QMouseEvent *e)
 
virtual bool handleWheelEvent (QwtPlot *bindPlot, QWheelEvent *e)
 
QwtScaleWidgetfindTargetOnScale (const QPoint &pos)
 

Detailed Description

针对寄生绘图的事件过滤器,主要处理坐标轴动作

由于寄生绘图属于宿主绘图的子窗口,多个寄生绘图的部件的事件无法传递到其它寄生绘图的部件上

例如有2个寄生绘图,寄生绘图的轴区域是重叠覆盖的,最顶层的寄生绘图的坐标轴窗口是和下面层级及宿主绘图的坐标轴窗口尺寸是一样的, 也就是说,对于一个坐标轴窗口的事件,只有最顶层的寄生轴窗口能接收到,就算ignore忽略掉这个事件,只是落到了当前寄生绘图窗口, 而不是下一层级的寄生绘图的坐标轴窗口,但一般希望的事情是,顶层的寄生绘图的坐标轴窗口事件如果忽略,应该落到下一层寄生绘图的坐标轴窗口, 这样就能处理多坐标轴时坐标轴的动作。

这个类就是为了解决上述问题设计的,轴的动作都放到这里来执行,不用做事件的传递者,而做事件的执行者

Member Function Documentation

◆ findAxisIdByScaleWidget()

QwtAxisId QwtPlotScaleEventDispatcher::findAxisIdByScaleWidget ( const QwtPlot plot,
const QwtScaleWidget scaleWidget 
)
static

获取 QwtScaleWidget 对应的轴 ID

Parameters
plotQwtPlot 指针
scaleWidget要查找的 QwtScaleWidget
Returns
轴 ID,如果找不到返回 QwtAxis::AxisPositions

The documentation for this class was generated from the following files: