SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
rangeslider.h
Go to the documentation of this file.
1
24#ifndef OPENSWMMVIS_UI_WIDGETS_RANGESLIDER_H
25#define OPENSWMMVIS_UI_WIDGETS_RANGESLIDER_H
26
27#include <QWidget>
28
29namespace openswmmvis::ui {
30
31class RangeSliderWidget : public QWidget
32{
33 Q_OBJECT
34 Q_PROPERTY(qreal lo READ lo NOTIFY rangeChanged)
35 Q_PROPERTY(qreal hi READ hi NOTIFY rangeChanged)
36public:
37 explicit RangeSliderWidget(QWidget *parent = nullptr);
38
39 qreal lo() const noexcept { return m_lo; }
40 qreal hi() const noexcept { return m_hi; }
41
45 void setRange(qreal lo, qreal hi);
46
47 QSize sizeHint() const override { return {300, 20}; }
48 QSize minimumSizeHint() const override { return {120, 20}; }
49
50signals:
51 void rangeChanged(qreal lo, qreal hi);
52
53protected:
54 void paintEvent(QPaintEvent *e) override;
55 void mousePressEvent(QMouseEvent *e) override;
56 void mouseMoveEvent(QMouseEvent *e) override;
57 void mouseReleaseEvent(QMouseEvent *e) override;
58 void keyPressEvent(QKeyEvent *e) override;
59
60private:
61 enum class DragKind { None, Lo, Hi, Both };
62
63 int trackLeft() const noexcept;
64 int trackRight() const noexcept;
65 int trackWidth() const noexcept;
66 qreal pixelToNorm(int px) const noexcept;
67 int normToPixel(qreal v) const noexcept;
68 DragKind hitTest(const QPoint &p) const noexcept;
69
70 qreal m_lo = 0.0;
71 qreal m_hi = 1.0;
72
73 DragKind m_drag = DragKind::None;
74 int m_dragOriginPx = 0;
75 qreal m_dragOriginLo = 0.0;
76 qreal m_dragOriginHi = 1.0;
77};
78
79} // namespace openswmmvis::ui
80
81#endif // OPENSWMMVIS_UI_WIDGETS_RANGESLIDER_H
Definition rangeslider.h:32
void rangeChanged(qreal lo, qreal hi)
QSize sizeHint() const override
Definition rangeslider.h:47
void mousePressEvent(QMouseEvent *e) override
Definition rangeslider.cpp:112
qreal hi
Definition rangeslider.h:35
QSize minimumSizeHint() const override
Definition rangeslider.h:48
void paintEvent(QPaintEvent *e) override
Definition rangeslider.cpp:80
qreal lo
Definition rangeslider.h:34
qreal hi() const noexcept
Definition rangeslider.h:40
void mouseMoveEvent(QMouseEvent *e) override
Definition rangeslider.cpp:126
void mouseReleaseEvent(QMouseEvent *e) override
Definition rangeslider.cpp:167
void setRange(qreal lo, qreal hi)
Set the current selected range. Both values are clamped to [0..1] and reordered so lo ≤ hi....
Definition rangeslider.cpp:33
void keyPressEvent(QKeyEvent *e) override
Definition rangeslider.cpp:178
int e
Definition inpmeshreader.cpp:41
ArrowPlacement p
Definition linesymbollayer.cpp:27
Definition openswmmvislayer.h:43
QVector< int > v
pool vertex indices
Definition pslgminsize.cpp:159
QVector< int > parent
union-find
Definition pslgminsize.cpp:176