QWT API (中文) 7.0.1
Qt绘图库 - 中文API文档
载入中...
搜索中...
未找到
qwt_plot_series_data_picker.h
1/******************************************************************************
2 * Qwt Widget Library
3 * Copyright (C) 2024 ChenZongYan <czy.t@163.com>
4 *****************************************************************************/
5#ifndef QWT_PLOT_SERIES_DATA_PICKER_H
6#define QWT_PLOT_SERIES_DATA_PICKER_H
7#include <QList>
8#include <QPointF>
9#include "qwt_canvas_picker.h"
10#include "qwt_text.h"
11class QwtPlot;
12class QwtPlotItem;
13
28{
29 Q_OBJECT
30 QWT_DECLARE_PRIVATE(QwtPlotSeriesDataPicker)
31public:
42 {
44 PickNearestPoint
45 };
46
69
80 {
82 LinearInterpolation
83 };
84
95 {
96 QwtPlotItem* item { nullptr };
97 QPointF feature { 0, 0 };
98 size_t index { 0 };
99 };
100
101public:
103 explicit QwtPlotSeriesDataPicker(QWidget* canvas);
106
108 void setPickMode(PickSeriesMode mode);
110 PickSeriesMode pickMode() const;
111
113 void setTextArea(TextPlacement t);
115 TextPlacement textArea() const;
116
118 void setInterpolationMode(InterpolationMode mode);
120 InterpolationMode interpolationMode() const;
122 bool isInterpolation() const;
123
125 void setNearestSearchWindowSize(int windowSize);
127 int nearestSearchWindowSize() const;
128
130 void setEnableDrawFeaturePoint(bool on = true);
132 bool isEnableDrawFeaturePoint() const;
133
135 void setDrawFeaturePointSize(int px);
137 int drawFeaturePointSize() const;
138
140 void setTextBackgroundBrush(const QBrush& br);
142 QBrush textBackgroundBrush() const;
143
145 void setTextAlignment(Qt::Alignment al);
147 Qt::Alignment textAlignment() const;
148
149 // 是否显示x值
150 void setEnableShowXValue(bool on);
151 bool isEnableShowXValue() const;
152
153 // 设置trackerRect在TextFollowMouse模式下的偏移量
154 void setTextTrackerOffset(const QPoint& offset);
155 QPoint textTrackerOffset() const;
156
157 // 顶部矩形文字
158 QwtText trackerText(const QPoint& pos) const override;
159
160 // 让矩形在最顶部
161 QRect trackerRect(const QFont& f) const override;
162
163 // 绘制rubberband
164 virtual void drawRubberBand(QPainter* painter) const override;
165
166 // 手动设置位置
167 virtual void setTrackerPosition(const QPoint& pos) override;
168
169protected:
170 // 获取绘图区域屏幕坐标pos上,的所有可拾取的y值,返回获取的个数
171 virtual int pickYValue(const QwtPlot* p, const QPoint& pos, bool interpolate = false);
172 // 获取绘图区域屏幕坐标pos上,可拾取的最近的一个点,(基于窗口实现快速索引)
173 virtual int pickNearestPoint(const QwtPlot* plot, const QPoint& pos, int windowSize = -5);
174private Q_SLOTS:
175 // item删除的槽,用于更新记录
176 void onPlotItemDetached(QwtPlotItem* item, bool on);
177 void onParasitePlotAttached(QwtPlot* parasiteplot, bool on);
178
179protected:
180 // 生成一个item的文字内容
181 virtual QString valueString(const QList< FeaturePoint >& fps) const;
182 // 绘制特征点
183 virtual void drawFeaturePoint(QPainter* painter, const QwtPlot* plot, const QwtPlotItem* item, const QPointF& itemPoint) const;
184 // 鼠标移动
185 virtual void move(const QPoint& pos) override;
186 // 格式化为坐标轴对应的内容,针对时间轴,value是一个大浮点数,用户需要看到的是2024-10-01这样的数字
187 QString formatAxisValue(double value, int axisId, QwtPlot* plot) const;
188
189private:
190 // 绘制特征点,所谓特征点就是捕获到的点
191 void drawAllFeaturePoints(QPainter* painter) const;
192 // 更新特征点
193 void updateFeaturePoint(const QPoint& pos);
194 //
195 QRect ensureRectInBounds(const QRect& rect, const QRect& bounds) const;
196};
197
198#endif // QWT_PLOT_SERIES_DATA_PICKER_H
Definition qwt_dyngrid_layout.h:33
专门针对 canvas 的 picker 基类
Definition qwt_canvas_picker.h:29
virtual void drawRubberBand(QPainter *) const
根据橡皮筋样式绘制橡皮筋
Definition qwt_picker.cpp:803
virtual void setTrackerPosition(const QPoint &pos)
手动设置追踪器位置
Definition qwt_picker.cpp:1052
virtual void move(const QPoint &)
Move the last point of the selection The moved() signal is emitted.
Definition qwt_picker.cpp:1499
virtual QwtText trackerText(const QPoint &pos) const
返回位置的标签
Definition qwt_picker.cpp:660
virtual QRect trackerRect(const QFont &) const
从追踪器当前位置计算追踪器文本的边界矩形
Definition qwt_picker.cpp:984
绘图画布上项目的基类
Definition qwt_plot_item.h:119
这是一个绘图数据拾取显示类,用于显示当前的y值,或者显示最近点
Definition qwt_plot_series_data_picker.h:28
InterpolationMode
插值模式
Definition qwt_plot_series_data_picker.h:80
@ NoInterpolation
No interpolation, use nearest data point
Definition qwt_plot_series_data_picker.h:81
~QwtPlotSeriesDataPicker()
Destructor
TextPlacement
文本放置选项
Definition qwt_plot_series_data_picker.h:57
@ TextOnCanvasTopRight
Text on canvas top right
Definition qwt_plot_series_data_picker.h:62
@ TextOnCanvasTopAuto
Text on canvas top, left or right auto-detected based on mouse position
Definition qwt_plot_series_data_picker.h:66
@ TextOnCanvasBottomRight
Text on canvas bottom right
Definition qwt_plot_series_data_picker.h:64
@ TextOnCanvasBottomLeft
Text on canvas bottom left
Definition qwt_plot_series_data_picker.h:65
@ TextPlaceAuto
Auto placement (top for pick y, follow mouse for pick nearest)
Definition qwt_plot_series_data_picker.h:58
@ TextFollowOnTop
On top of the plot area (default)
Definition qwt_plot_series_data_picker.h:59
@ TextFollowOnBottom
On bottom of the plot area
Definition qwt_plot_series_data_picker.h:60
@ TextOnCanvasTopLeft
Text on canvas top left
Definition qwt_plot_series_data_picker.h:63
@ TextFollowMouse
Follow mouse pointer
Definition qwt_plot_series_data_picker.h:61
PickSeriesMode
拾取模式
Definition qwt_plot_series_data_picker.h:42
@ PickYValue
Pick y-value (default)
Definition qwt_plot_series_data_picker.h:43
二维绘图部件
Definition qwt_plot.h:138
表示文本的类
Definition qwt_text.h:93
特征点结构
Definition qwt_plot_series_data_picker.h:95