QWT 7.0.1
Loading...
Searching...
No Matches
qwt_scale_widget.h
1/******************************************************************************
2 * Qwt Widget Library
3 * Copyright (C) 1997 Josef Wilgen
4 * Copyright (C) 2002 Uwe Rathmann
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the Qwt License, Version 1.0
8 *
9 * Modified by ChenZongYan in 2024 <czy.t@163.com>
10 * Summary of major modifications (see ChangeLog.md for full history):
11 * 1. CMake build system & C++11 throughout.
12 * 2. Core panner/ zoomer refactored:
13 * - QwtPanner → QwtCachePanner (pixmap-cache version)
14 * - New real-time QwtPlotPanner derived from QwtPicker.
15 * 3. Zoomer supports multi-axis.
16 * 4. Parasite-plot framework:
17 * - QwtFigure, QwtPlotParasiteLayout, QwtPlotTransparentCanvas,
18 * - QwtPlotScaleEventDispatcher, built-in pan/zoom on axis.
19 * 5. New picker: QwtPlotSeriesDataPicker (works with date axis).
20 * 6. Raster & color-map extensions:
21 * - QwtGridRasterData (2-D table + interpolation)
22 * - QwtLinearColorMap::stopColors(), stopPos() API rename.
23 * 7. Bar-chart: expose pen/brush control.
24 * 8. Amalgamated build: single QwtPlot.h / QwtPlot.cpp pair in src-amalgamate.
25 *****************************************************************************/
26
27#ifndef QWT_SCALE_WIDGET_H
28#define QWT_SCALE_WIDGET_H
29
30#include "qwt_global.h"
31#include "qwt_text.h"
32#include "qwt_scale_draw.h"
33#include "qwt_axis_id.h"
34#include "qwt_scale_div.h"
35
36#include <qwidget.h>
37#include <qfont.h>
38#include <qcolor.h>
39#include <qstring.h>
40// Qt
41class QPainter;
42class QEvent;
43class QPaintEvent;
44class QResizeEvent;
45class QMouseEvent;
46class QWheelEvent;
47// Qwt
48class QwtTransform;
49class QwtColorMap;
50
73class QWT_EXPORT QwtScaleWidget : public QWidget
74{
75 Q_OBJECT
76 QWT_DECLARE_PRIVATE(QwtScaleWidget)
77public:
80 {
85 TitleInverted = 1
86 };
87
88 Q_DECLARE_FLAGS(LayoutFlags, LayoutFlag)
89
90
94 {
96 ActionNone = 0x00,
98 ActionWheelZoom = 0x01,
100 ActionClickPan = 0x02,
102 ActionAll = 0xFF
103 };
104 Q_DECLARE_FLAGS(BuiltinActionsFlags, BuiltinActions)
105public:
106 explicit QwtScaleWidget(QWidget* parent = NULL);
107 explicit QwtScaleWidget(QwtScaleDraw::Alignment, QWidget* parent = NULL);
108 virtual ~QwtScaleWidget();
109
110Q_SIGNALS:
111
116
130 void requestScaleRangeUpdate(double min, double max);
131
136 void selectionChanged(bool selected);
137
138public:
139 void setTitle(const QString& title);
140 void setTitle(const QwtText& title);
141 QwtText title() const;
142
143 void setLayoutFlag(LayoutFlag, bool on);
144 bool testLayoutFlag(LayoutFlag) const;
145
146 void setBorderDist(int dist1, int dist2);
147 int startBorderDist() const;
148 int endBorderDist() const;
149
150 void getBorderDistHint(int& start, int& end) const;
151
152 void getMinBorderDist(int& start, int& end) const;
153 void setMinBorderDist(int start, int end);
154 int startMinBorderDist() const;
155 int endMinBorderDist() const;
156
157 void setMargin(int);
158 int margin() const;
159
160 void setSpacing(int);
161 int spacing() const;
162
163 // 坐标轴和绘图边距的偏移,这个值实际和contentMargin类似,但qwt的contentMargin只用于minimumSizeHint
164 // 对于寄生轴,需要宿主轴有很大的空白位能让寄生轴显示,这个edgeOffset主要就是让坐标轴留出一个空白位
165 void setEdgeMargin(int offset);
166 int edgeMargin() const;
167
168 void setScaleDiv(const QwtScaleDiv&);
169 void setTransformation(QwtTransform*);
170
171 void setScaleDraw(QwtScaleDraw*);
172 const QwtScaleDraw* scaleDraw() const;
173 QwtScaleDraw* scaleDraw();
174
175 void setLabelAlignment(Qt::Alignment);
176 void setLabelRotation(double rotation);
177
178 void setColorBarEnabled(bool);
179 bool isColorBarEnabled() const;
180
181 void setColorBarWidth(int);
182 int colorBarWidth() const;
183
184 void setColorMap(const QwtInterval&, QwtColorMap*);
185
186 QwtInterval colorBarInterval() const;
187 const QwtColorMap* colorMap() const;
188
189 virtual QSize sizeHint() const QWT_OVERRIDE;
190 virtual QSize minimumSizeHint() const QWT_OVERRIDE;
191
192 int titleHeightForWidth(int width) const;
193 int dimForLength(int length, const QFont& scaleFont) const;
194
195 void drawColorBar(QPainter*, const QRectF&) const;
196 void drawTitle(QPainter*, QwtScaleDraw::Alignment, const QRectF& rect) const;
197
198 void setAlignment(QwtScaleDraw::Alignment);
199 QwtScaleDraw::Alignment alignment() const;
200
201 QRectF colorBarRect(const QRectF&) const;
202
203 // 去除了colorBar,margin,edgeMargin,BorderDistHint这些区域的矩形,也就是用来绘制刻度的区域
204 QRect scaleRect() const;
205 // font color of the coordinate axis/设置坐标轴的字体颜色
206 void setTextColor(const QColor& c);
207 QColor textColor() const;
208
209 // color of the coordinate axis/坐标轴的颜色
210 void setScaleColor(const QColor& c);
211 QColor scaleColor() const;
212
213 void layoutScale(bool update_geometry = true);
214
215 // 获取此轴窗口对应的axisID
216 QwtAxisId axisID() const;
217 // 是否是x坐标轴
218 bool isXAxis() const;
219 // 是否是y坐标轴
220 bool isYAxis() const;
221 //===============================================
222 // 以下接口用于内置动作
223 //===============================================
224
225 // 启用/禁用内置交互动作
226 void setBuildinActions(BuiltinActionsFlags acts);
227 BuiltinActionsFlags buildinActions() const;
228 // 检测内置动作是否激活
229 bool testBuildinActions(BuiltinActions ba) const;
230
231 // 设置坐标轴选中状态
232 void setSelected(bool selected);
233 bool isSelected() const;
234
235 // 设置选中状态的颜色
236 void setSelectionColor(const QColor& color);
237 QColor selectionColor() const;
238
239 // 设置缩放因子(默认1.2)
240 void setZoomFactor(double factor);
241 double zoomFactor() const;
242
243 // 设置选中后画笔的宽度修正
244 void setSelectedPenWidthOffset(qreal offset = 1);
245 qreal selectedPenWidthOffset() const;
246
247 // 判断点是否在刻度区域
248 bool isOnScale(const QPoint& pos) const;
249
250protected:
251 virtual void paintEvent(QPaintEvent*) QWT_OVERRIDE;
252 virtual void resizeEvent(QResizeEvent*) QWT_OVERRIDE;
253 virtual void changeEvent(QEvent*) QWT_OVERRIDE;
254
255 void draw(QPainter*) const;
256
257 void scaleChange();
258
259private:
260 void initScale(QwtScaleDraw::Alignment);
261};
262
263Q_DECLARE_OPERATORS_FOR_FLAGS(QwtScaleWidget::LayoutFlags)
264
265#endif
QwtColorMap is used to map values into colors.
Definition qwt_color_map.h:56
A class representing an interval.
Definition qwt_interval.h:40
A class representing a scale division/表示刻度划分的类
Definition qwt_scale_div.h:53
A class for drawing scales.
Definition qwt_scale_draw.h:53
Alignment
Alignment of the scale draw.
Definition qwt_scale_draw.h:60
A Widget which contains a scale.
Definition qwt_scale_widget.h:74
void scaleDivChanged()
Signal emitted, whenever the scale division changes/当刻度分度发生变化时发出的信号
void requestScaleRangeUpdate(double min, double max)
Request to change the axis scale division/坐标轴主动请求变更刻度范围
LayoutFlag
Layout flags of the title.
Definition qwt_scale_widget.h:80
BuiltinActions
内置的动作
Definition qwt_scale_widget.h:94
void selectionChanged(bool selected)
当前轴被选中状态发生变化发射信号
A class representing a text.
Definition qwt_text.h:69
A transformation between coordinate systems.
Definition qwt_transform.h:53