QWT 7.0.1
Loading...
Searching...
No Matches
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;
17{
18 Q_OBJECT
19 QWT_DECLARE_PRIVATE(QwtPlotSeriesDataPicker)
20public:
25 {
27 PickNearestPoint
28 };
29
46
51 {
53 LinearInterpolation
54 };
55
57 {
59 QPointF feature;
60 size_t index;
61 };
62
63public:
64 explicit QwtPlotSeriesDataPicker(QWidget* canvas);
66
67 // 拾取模式
68 void setPickMode(PickSeriesMode mode);
69 PickSeriesMode pickMode() const;
70
71 // 设置文字显示的位置
72 void setTextArea(TextPlacement t);
73 TextPlacement textArea() const;
74
75 // 插值模式
76 void setInterpolationMode(InterpolationMode mode);
77 InterpolationMode interpolationMode() const;
78 // 判断是否插值
79 bool isInterpolation() const;
80
81 // 临近点搜索窗口大小,窗口大小决定了临近点搜索的范围,避免全曲线遍历
82 void setNearestSearchWindowSize(int windowSize);
83 int nearestSearchWindowSize() const;
84
85 // 是否绘制特征点,如果是,picker会把捕获的特征点绘制在曲线上
86 void setEnableDrawFeaturePoint(bool on = true);
87 bool isEnableDrawFeaturePoint() const;
88
89 // 设置绘制的特征点的大小
90 void setDrawFeaturePointSize(int px);
91 int drawFeaturePointSize() const;
92
93 // 设置文字的背景颜色
94 void setTextBackgroundBrush(const QBrush& br);
95 QBrush textBackgroundBrush() const;
96
97 // 文字的对其方式
98 void setTextAlignment(Qt::Alignment al);
99 Qt::Alignment textAlignment() const;
100
101 // 是否显示x值
102 void setEnableShowXValue(bool on);
103 bool isEnableShowXValue() const;
104
105 // 顶部矩形文字
106 QwtText trackerText(const QPoint& pos) const QWT_OVERRIDE;
107
108 // 让矩形在最顶部
109 QRect trackerRect(const QFont& f) const QWT_OVERRIDE;
110
111 // 绘制rubberband
112 virtual void drawRubberBand(QPainter* painter) const QWT_OVERRIDE;
113
114 // 手动设置位置
115 virtual void setTrackerPosition(const QPoint& pos) QWT_OVERRIDE;
116
117private:
118 // 获取绘图区域屏幕坐标pos上,的所有可拾取的y值,返回获取的个数
119 int pickYValue(const QwtPlot* plot, const QPoint& pos, bool interpolate = false);
120 // 获取绘图区域屏幕坐标pos上,可拾取的最近的一个点,(基于窗口实现快速索引)
121 int pickNearestPoint(const QwtPlot* plot, const QPoint& pos, int windowSize = -5);
122private Q_SLOTS:
123 // item删除的槽,用于更新记录
124 void onPlotItemDetached(QwtPlotItem* item, bool on);
125 void onParasitePlotAttached(QwtPlot* parasiteplot, bool on);
126
127protected:
128 // 生成一个item的文字内容
129 virtual QString valueString(const QList< FeaturePoint >& fps) const;
130 // 绘制特征点,所谓特征点就是捕获到的点
131 virtual void drawFeaturePoints(QPainter* painter) const;
132 // 鼠标移动
133 virtual void move(const QPoint& pos) QWT_OVERRIDE;
134 // 格式化为坐标轴对应的内容,针对时间轴,value是一个大浮点数,用户需要看到的是2024-10-01这样的数字
135 QString formatAxisValue(double value, int axisId, QwtPlot* plot) const;
136 // 更新特征点
137 void updateFeaturePoint(const QPoint& pos);
138};
139
140#endif // QWT_PLOT_SERIES_DATA_PICKER_H
Definition qwt_dyngrid_layout.h:33
专门针对 canvas 的 picker 基类 / Base picker class specifically for canvas
Definition qwt_canvas_picker.h:21
virtual void drawRubberBand(QPainter *) const
Draw a rubber band, depending on rubberBand()
Definition qwt_picker.cpp:613
virtual void setTrackerPosition(const QPoint &pos)
强制设置trackerPosition,正常这个不需要调用,但有时候没有鼠标也想显示picker可以通过此函数来设置
Definition qwt_picker.cpp:842
virtual void move(const QPoint &)
Move the last point of the selection The moved() signal is emitted.
Definition qwt_picker.cpp:1279
virtual QwtText trackerText(const QPoint &pos) const
Return the label for a position.
Definition qwt_picker.cpp:486
virtual QRect trackerRect(const QFont &) const
Calculate the bounding rectangle for the tracker text from the current position of the tracker.
Definition qwt_picker.cpp:783
Base class for items on the plot canvas.
Definition qwt_plot_item.h:85
这是一个绘图数据拾取显示类,用于显示当前的y值,或者显示最近点
Definition qwt_plot_series_data_picker.h:17
InterpolationMode
插值模式枚举
Definition qwt_plot_series_data_picker.h:51
@ NoInterpolation
不进行插值,使用最近的数据点
Definition qwt_plot_series_data_picker.h:52
TextPlacement
The TextArea enum.
Definition qwt_plot_series_data_picker.h:34
@ TextOnCanvasTopRight
文字在画布的右上角
Definition qwt_plot_series_data_picker.h:39
@ TextOnCanvasTopAuto
文字在画布的上边,具体是左是右根据鼠标位置来自动识别,尽量避免不影响鼠标位置
Definition qwt_plot_series_data_picker.h:43
@ TextOnCanvasBottomRight
文字在画布的右下角
Definition qwt_plot_series_data_picker.h:41
@ TextOnCanvasBottomLeft
文字在画布的左下角
Definition qwt_plot_series_data_picker.h:42
@ TextPlaceAuto
自动放置(pick y的时候放置在顶部,pick nearest的时候跟随鼠标)
Definition qwt_plot_series_data_picker.h:35
@ TextFollowOnTop
放在绘图区的顶部(默认)
Definition qwt_plot_series_data_picker.h:36
@ TextFollowOnBottom
放在绘图区的底部
Definition qwt_plot_series_data_picker.h:37
@ TextOnCanvasTopLeft
文字在画布的左上角
Definition qwt_plot_series_data_picker.h:40
@ TextFollowMouse
跟随鼠标指针
Definition qwt_plot_series_data_picker.h:38
PickSeriesMode
拾取模式
Definition qwt_plot_series_data_picker.h:25
@ PickYValue
拾取y值(默认)
Definition qwt_plot_series_data_picker.h:26
A 2-D plotting widget.
Definition qwt_plot.h:99
A class representing a text.
Definition qwt_text.h:69
Definition qwt_plot_series_data_picker.h:57
size_t index
在item里的索引
Definition qwt_plot_series_data_picker.h:60
QPointF feature
特征点
Definition qwt_plot_series_data_picker.h:59
QwtPlotItem * item
对应的item
Definition qwt_plot_series_data_picker.h:58