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

The QwtFigureWidgetOverlay是针对QwtFigure的操作蒙版 More...

#include <qwt_figure_widget_overlay.h>

Inheritance diagram for QwtFigureWidgetOverlay:
QwtWidgetOverlay

Classes

class  PrivateData
 

Public Types

enum  ControlType {
  ControlLineTop , ControlLineBottom , ControlLineLeft , ControlLineRight ,
  ControlPointTopLeft , ControlPointTopRight , ControlPointBottomLeft , ControlPointBottomRight ,
  Inner , OutSide
}
 用于标记矩形的区域
 
enum  BuiltInFunctionsFlag { FunSelectCurrentPlot = 1 , FunResizePlot = 2 }
 内置的功能 More...
 
- Public Types inherited from QwtWidgetOverlay
enum  MaskMode { NoMask , MaskHint , AlphaMask }
 Mask mode. More...
 
enum  RenderMode { AutoRenderMode , CopyAlphaMask , DrawOverlay }
 Render mode. More...
 

Public Slots

void setActiveWidget (QWidget *w)
 设置当前激活的窗口
 
- Public Slots inherited from QwtWidgetOverlay
void updateOverlay ()
 Recalculate the mask and repaint the overlay.
 

Signals

void widgetNormGeometryChanged (QWidget *w, const QRectF &oldNormGeo, const QRectF &newNormGeo)
 绘图尺寸发生改变信号
 
void activeWidgetChanged (QWidget *oldActive, QWidget *newActive)
 激活窗口发生变化的信号
 

Public Member Functions

 QwtFigureWidgetOverlay (QwtFigure *fig)
 QwtFigureWidgetOverlay的构造函数
 
QwtFigurefigure () const
 
void setTransparentForMouseEvents (bool on)
 
void setBuiltInFunctionsEnable (BuiltInFunctionsFlag flag, bool on=true)
 设置内置功能的开关
 
bool testBuiltInFunctions (BuiltInFunctionsFlag flag) const
 判断当前的功能开关
 
bool isHaveActiveWidget () const
 判断当前是否有激活的窗口
 
void setBorderPen (const QPen &p)
 设置边框的画笔
 
QPen borderPen () const
 边框的画笔
 
void setControlPointBrush (const QBrush &b)
 设置控制点的填充
 
QBrush controlPointBrush () const
 控制点的填充
 
void setControlPointSize (const QSize &c)
 设置控制点尺寸
 
QSize controlPointSize () const
 控制点尺寸 @default 8*8
 
void selectNextWidget (bool forward=true)
 选择下一个窗口作为激活窗体
 
void selectNextPlot (bool forward=true)
 选择下一个绘图作为激活窗体
 
QWidget * currentActiveWidget () const
 获取当前激活的窗体
 
QwtPlotcurrentActivePlot () const
 获取当前激活的绘图
 
void showPercentText (bool on=true)
 显示占比数值
 
- Public Member Functions inherited from QwtWidgetOverlay
 QwtWidgetOverlay (QWidget *)
 Constructor.
 
virtual ~QwtWidgetOverlay ()
 Destructor.
 
void setMaskMode (MaskMode)
 Specify how to find the mask for the overlay.
 
MaskMode maskMode () const
 
void setRenderMode (RenderMode)
 Set the render mode.
 
RenderMode renderMode () const
 
virtual bool eventFilter (QObject *, QEvent *) QWT_OVERRIDE
 Event filter.
 

Static Public Member Functions

static Qt::CursorShape controlTypeToCursor (ControlType rr)
 根据范围获取鼠标图标
 
static ControlType getPositionControlType (const QPoint &pos, const QRect &region, int err=1)
 根据点和矩形的关系,返回图标的样式
 
static bool isPointInRectEdget (const QPoint &pos, const QRect &region, int err=1)
 判断点是否在矩形区域的边缘
 

Protected Member Functions

virtual void drawOverlay (QPainter *p) const override
 Draw the widget overlay.
 
virtual QRegion maskHint () const override
 Calculate an approximation for the mask.
 
virtual void drawActiveWidget (QPainter *painter, QWidget *activeW) const
 绘制激活的窗口
 
virtual void drawResizeingControlLine (QPainter *painter, const QRectF &willSetNormRect) const
 绘制resize变换的橡皮筋控制线
 
virtual void drawControlLine (QPainter *painter, const QRect &actualRect, const QRectF &normRect) const
 绘制控制线
 
void startResize (ControlType controlType, const QPoint &pos)
 开始变换的辅助函数,此函数会记录开始变换的状态
 
void mouseMoveEvent (QMouseEvent *me) override
 
void mouseReleaseEvent (QMouseEvent *me) override
 
void mousePressEvent (QMouseEvent *me) override
 
void keyPressEvent (QKeyEvent *ke) override
 
- Protected Member Functions inherited from QwtWidgetOverlay
virtual void paintEvent (QPaintEvent *) QWT_OVERRIDE
 Paint event.
 
virtual void resizeEvent (QResizeEvent *) QWT_OVERRIDE
 Resize event.
 

Detailed Description

The QwtFigureWidgetOverlay是针对QwtFigure的操作蒙版

此类提供了figure窗口子对象调整大小的功能,以及改变当前绘图的功能,你可以通过继承此类实现耕地的操作

Note
QwtFigureWidgetOverlay并不会直接改变尺寸,因此尺寸的改变主要在管理窗口中执行,这是为了能让它有更大的自由度,例如需要做回退功能

Member Enumeration Documentation

◆ BuiltInFunctionsFlag

内置的功能

Enumerator
FunSelectCurrentPlot 

此功能开启,可以改变选中的当前绘图

FunResizePlot 

此功能开启,可以改变绘图的尺寸

Constructor & Destructor Documentation

◆ QwtFigureWidgetOverlay()

QwtFigureWidgetOverlay::QwtFigureWidgetOverlay ( QwtFigure fig)
explicit

QwtFigureWidgetOverlay的构造函数

Note
构造函数不允许传入nullptr
Parameters
fig

Member Function Documentation

◆ activeWidgetChanged

void QwtFigureWidgetOverlay::activeWidgetChanged ( QWidget *  oldActive,
QWidget *  newActive 
)
signal

激活窗口发生变化的信号

Parameters
oldActive如果之前没有激活窗口,此指针有可能是nullptr
newActive如果没有新的激活窗口,此指针有可能是nullptr

◆ borderPen()

QPen QwtFigureWidgetOverlay::borderPen ( ) const

边框的画笔

Parameters
p

◆ controlPointBrush()

QBrush QwtFigureWidgetOverlay::controlPointBrush ( ) const

控制点的填充

Parameters
b

◆ controlPointSize()

QSize QwtFigureWidgetOverlay::controlPointSize ( ) const

控制点尺寸 @default 8*8

Returns

◆ controlTypeToCursor()

Qt::CursorShape QwtFigureWidgetOverlay::controlTypeToCursor ( QwtFigureWidgetOverlay::ControlType  rr)
static

根据范围获取鼠标图标

Parameters
rr
Returns
鼠标图标

◆ currentActivePlot()

QwtPlot * QwtFigureWidgetOverlay::currentActivePlot ( ) const

获取当前激活的绘图

Returns

◆ currentActiveWidget()

QWidget * QwtFigureWidgetOverlay::currentActiveWidget ( ) const

获取当前激活的窗体

Returns

◆ drawActiveWidget()

void QwtFigureWidgetOverlay::drawActiveWidget ( QPainter *  painter,
QWidget *  activeW 
) const
protectedvirtual

绘制激活的窗口

通过继承此函数可改变绘制的方式,默认绘制会调用drawControlLine 函数

Parameters
painter
activeW

◆ drawControlLine()

void QwtFigureWidgetOverlay::drawControlLine ( QPainter *  painter,
const QRect &  actualRect,
const QRectF &  normRect 
) const
protectedvirtual

绘制控制线

Parameters
painter
actualRect真实尺寸
normRect归一化尺寸

◆ drawOverlay()

void QwtFigureWidgetOverlay::drawOverlay ( QPainter *  painter) const
overrideprotectedvirtual

Draw the widget overlay.

Parameters
painterPainter

Implements QwtWidgetOverlay.

◆ drawResizeingControlLine()

void QwtFigureWidgetOverlay::drawResizeingControlLine ( QPainter *  painter,
const QRectF &  willSetNormRect 
) const
protectedvirtual

绘制resize变换的橡皮筋控制线

通过继承此函数可改变绘制的方式,默认绘制会调用drawControlLine 函数

Parameters
painter
willSetNormRect

◆ getPositionControlType()

QwtFigureWidgetOverlay::ControlType QwtFigureWidgetOverlay::getPositionControlType ( const QPoint &  pos,
const QRect &  region,
int  err = 1 
)
static

根据点和矩形的关系,返回图标的样式

Parameters
pos
region矩形区域
err允许误差
Returns

◆ isHaveActiveWidget()

bool QwtFigureWidgetOverlay::isHaveActiveWidget ( ) const

判断当前是否有激活的窗口

Returns

◆ isPointInRectEdget()

bool QwtFigureWidgetOverlay::isPointInRectEdget ( const QPoint &  pos,
const QRect &  region,
int  err = 1 
)
static

判断点是否在矩形区域的边缘

Parameters
pos
region矩形区域
err允许误差
Returns
如果符合边缘条件,返回true

◆ maskHint()

QRegion QwtFigureWidgetOverlay::maskHint ( ) const
overrideprotectedvirtual

Calculate an approximation for the mask.

  • MaskHint The hint is used as mask.
  • AlphaMask The hint is used to speed up the algorithm for calculating a mask from non transparent pixels
  • NoMask The hint is unused.

The default implementation returns an invalid region indicating no hint.

Returns
Hint for the mask

Reimplemented from QwtWidgetOverlay.

◆ mouseReleaseEvent()

void QwtFigureWidgetOverlay::mouseReleaseEvent ( QMouseEvent *  me)
overrideprotected

由于在startResize时捕获了鼠标,因此,这里必须释放鼠标

◆ selectNextPlot()

void QwtFigureWidgetOverlay::selectNextPlot ( bool  forward = true)

选择下一个绘图作为激活窗体

Parameters
forward

◆ selectNextWidget()

void QwtFigureWidgetOverlay::selectNextWidget ( bool  forward = true)

选择下一个窗口作为激活窗体

Parameters
forward

◆ setActiveWidget

void QwtFigureWidgetOverlay::setActiveWidget ( QWidget *  w)
slot

设置当前激活的窗口

Parameters
w如果w和当前的activePlot一样,不做任何动作
Note
此函数会发射信号activeWidgetChanged
See also
activeWidgetChanged

◆ setBorderPen()

void QwtFigureWidgetOverlay::setBorderPen ( const QPen &  p)

设置边框的画笔

Parameters
p

◆ setBuiltInFunctionsEnable()

void QwtFigureWidgetOverlay::setBuiltInFunctionsEnable ( BuiltInFunctionsFlag  flag,
bool  on = true 
)

设置内置功能的开关

Parameters
flag
on
See also
QwtFigureWidgetOverlay::BuiltInFunctionsFlag

◆ setControlPointBrush()

void QwtFigureWidgetOverlay::setControlPointBrush ( const QBrush &  b)

设置控制点的填充

Parameters
b

◆ setControlPointSize()

void QwtFigureWidgetOverlay::setControlPointSize ( const QSize &  c)

设置控制点尺寸

Parameters
c

◆ showPercentText()

void QwtFigureWidgetOverlay::showPercentText ( bool  on = true)

显示占比数值

Parameters
on

◆ startResize()

void QwtFigureWidgetOverlay::startResize ( QwtFigureWidgetOverlay::ControlType  controlType,
const QPoint &  pos 
)
protected

开始变换的辅助函数,此函数会记录开始变换的状态

Parameters
controlType
pos

捕获鼠标,确保所有鼠标事件都发送到这个窗口 这个函数是关键,避免鼠标移动的时候被别的窗口捕获掉鼠标,导致无法接收到release事件 grabMouse可以:

  • 强制所有鼠标事件(移动、点击、释放等)都发送到调用该函数的窗口部件
  • 忽略鼠标的实际位置,即使鼠标移到了其他窗口或屏幕边缘
  • 确保鼠标事件链的完整性 此函数一定要releaseMouse,(releaseMouse在mouseReleaseEvent执行)

如果没有这个函数,鼠标移动到了底层绘图窗口或其他子窗口上,鼠标事件可能被这些窗口截获 QwtFigureWidgetOverlay收不到 mouseReleaseEvent,导致状态卡在"调整中"

◆ testBuiltInFunctions()

bool QwtFigureWidgetOverlay::testBuiltInFunctions ( BuiltInFunctionsFlag  flag) const

判断当前的功能开关

Parameters
flag
Returns

◆ widgetNormGeometryChanged

void QwtFigureWidgetOverlay::widgetNormGeometryChanged ( QWidget *  w,
const QRectF &  oldNormGeo,
const QRectF &  newNormGeo 
)
signal

绘图尺寸发生改变信号

Parameters
w窗口
oldGeometry旧的位置
newGeometry新的位置

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