QWT 7.0.1
Loading...
Searching...
No Matches
qwt_figure_widget_overlay.h
1#ifndef QWTFIGUREWIDGETOVERLAY_H
2#define QWTFIGUREWIDGETOVERLAY_H
3#include "qwt_widget_overlay.h"
4// Qt
5class QEvent;
6class QMouseEvent;
7class QHoverEvent;
8class QKeyEvent;
9// Qwt
10class QwtFigure;
11class QwtPlot;
12
21{
22 Q_OBJECT
23 QWT_DECLARE_PRIVATE(QwtFigureWidgetOverlay)
24public:
29 {
30 ControlLineTop,
31 ControlLineBottom,
32 ControlLineLeft,
33 ControlLineRight,
34 ControlPointTopLeft,
35 ControlPointTopRight,
36 ControlPointBottomLeft,
37 ControlPointBottomRight,
38 Inner,
39 OutSide
40 };
41 Q_ENUM(ControlType)
42
43
47 {
48 FunSelectCurrentPlot = 1,
49 FunResizePlot = 2
50 };
51 Q_ENUM(BuiltInFunctionsFlag)
52 Q_DECLARE_FLAGS(BuiltInFunctions, BuiltInFunctionsFlag)
53 Q_FLAG(BuiltInFunctions)
54
55public:
56 // 构造函数不允许传入nullptr
57 explicit QwtFigureWidgetOverlay(QwtFigure* fig);
59 QwtFigure* figure() const;
60 void setTransparentForMouseEvents(bool on);
61
62public:
63 // 根据点和矩形的关系,返回图标的样式
64 static Qt::CursorShape controlTypeToCursor(ControlType rr);
65 static ControlType getPositionControlType(const QPoint& pos, const QRect& region, int err = 1);
66 static bool isPointInRectEdget(const QPoint& pos, const QRect& region, int err = 1);
67 // 设置内置功能的开关
68 void setBuiltInFunctionsEnable(BuiltInFunctionsFlag flag, bool on = true);
69 bool testBuiltInFunctions(BuiltInFunctionsFlag flag) const;
70 // 判断当前是否有激活的窗口
71 bool isHaveActiveWidget() const;
72 // 设置边框的画笔
73 void setBorderPen(const QPen& p);
74 QPen borderPen() const;
75 // 控制点的填充
76 void setControlPointBrush(const QBrush& b);
77 QBrush controlPointBrush() const;
78 // 控制点尺寸
79 void setControlPointSize(const QSize& c);
80 QSize controlPointSize() const;
81 // 选择下一个窗口作为激活窗体
82 void selectNextWidget(bool forward = true);
83 // 选择下一个绘图作为激活窗体
84 void selectNextPlot(bool forward = true);
85 // 获取当前激活的窗口
86 QWidget* currentActiveWidget() const;
87 QwtPlot* currentActivePlot() const;
88 // 显示占比数值
89 void showPercentText(bool on = true);
90
91public Q_SLOTS:
92 // 改变激活窗口
93 void setActiveWidget(QWidget* w);
94
95protected:
96 virtual void drawOverlay(QPainter* p) const override;
97 virtual QRegion maskHint() const override;
98 // 绘制激活的窗口
99 virtual void drawActiveWidget(QPainter* painter, QWidget* activeW) const;
100 // 绘制resize变换的橡皮筋控制线
101 virtual void drawResizeingControlLine(QPainter* painter, const QRectF& willSetNormRect) const;
102 // 绘制控制线
103 virtual void drawControlLine(QPainter* painter, const QRect& actualRect, const QRectF& normRect) const;
104 // 辅助函数,标记开始改变尺寸
105 void startResize(ControlType controlType, const QPoint& pos);
106
107protected:
108 void mouseMoveEvent(QMouseEvent* me) override;
109 void mouseReleaseEvent(QMouseEvent* me) override;
110 void mousePressEvent(QMouseEvent* me) override;
111 void keyPressEvent(QKeyEvent* ke) override;
112Q_SIGNALS:
113
120 void widgetNormGeometryChanged(QWidget* w, const QRectF& oldNormGeo, const QRectF& newNormGeo);
126 void activeWidgetChanged(QWidget* oldActive, QWidget* newActive);
127
128private:
129};
130
131#endif // QWTFIGUREWIDGETOVERLAY_H
The QwtFigureWidgetOverlay是针对QwtFigure的操作蒙版
Definition qwt_figure_widget_overlay.h:21
void activeWidgetChanged(QWidget *oldActive, QWidget *newActive)
激活窗口发生变化的信号
ControlType
用于标记矩形的区域
Definition qwt_figure_widget_overlay.h:29
void widgetNormGeometryChanged(QWidget *w, const QRectF &oldNormGeo, const QRectF &newNormGeo)
绘图尺寸发生改变信号
BuiltInFunctionsFlag
内置的功能
Definition qwt_figure_widget_overlay.h:47
A figure container for organizing Qwt plots with flexible layout options.
Definition qwt_figure.h:90
A 2-D plotting widget.
Definition qwt_plot.h:99
An overlay for a widget.
Definition qwt_widget_overlay.h:58
virtual void drawOverlay(QPainter *painter) const =0
Draw the widget overlay.
virtual QRegion maskHint() const
Calculate an approximation for the mask.
Definition qwt_widget_overlay.cpp:390