realslider.h
Go to the documentation of this file.
1 #ifndef REALSLIDER_H
2 #define REALSLIDER_H
3 
4 #include <QSlider>
5 
6 class RealSlider : public QSlider
7 {
8  Q_OBJECT
9 public:
10  RealSlider(QWidget* parent = nullptr);
11 
12  void setLimits(double min, double max, int steps);
13 
14  double getValue() const;
15 
16  void setRealValue(double val);
17 
18  double getMaximum() const
19  {
20  return _max_value;
21  }
22 
23  double getMinimum() const
24  {
25  return _min_value;
26  }
27 
28  void setRealStepValue(double step);
29 
30 private slots:
31  void onValueChanged(int value);
32 
33 signals:
34  void realValueChanged(double);
35 
36 private:
37  double _min_value;
38  double _max_value;
39 };
40 //-------------------------------------------------------------
41 
42 inline RealSlider::RealSlider(QWidget* parent) : QSlider(parent)
43 {
44  setLimits(0.0, 1.0, 1);
45  connect(this, &QSlider::valueChanged, this, &RealSlider::onValueChanged);
46 }
47 
48 inline void RealSlider::setLimits(double min, double max, int steps)
49 {
50  _min_value = min;
51  _max_value = max;
52  QSlider::setRange(0, steps);
53 }
54 
55 inline void RealSlider::setRealValue(double val)
56 {
57  val = std::max(val, _min_value);
58  val = std::min(val, _max_value);
59  const double ratio = (val - _min_value) / (_max_value - _min_value);
60  long pos = std::round((double)(maximum() - minimum()) * ratio + minimum());
61  QSlider::setValue(pos);
62 }
63 
64 inline void RealSlider::setRealStepValue(double step)
65 {
66  const double ratio = (_max_value - _min_value) / (double)(maximum() - minimum());
67  int new_step = std::max(1, static_cast<int>(std::round(step / ratio)));
68  QSlider::setSingleStep(new_step);
69 }
70 
72 {
73  int min = minimum();
74  int max = maximum();
75  const double ratio = (double)value / (double)(max - min);
76  double posX = (_max_value - _min_value) * ratio + _min_value;
77  emit realValueChanged(posX);
78 }
79 
80 #endif // REALSLIDER_H
enum MQTTPropertyCodes value
double _max_value
Definition: realslider.h:38
double getMinimum() const
Definition: realslider.h:23
double getMaximum() const
Definition: realslider.h:18
void realValueChanged(double)
void setLimits(double min, double max, int steps)
Definition: realslider.h:48
#define min(A, B)
Definition: Log.c:64
#define max(A, B)
Definition: Socket.h:88
void onValueChanged(int value)
Definition: realslider.h:71
double _min_value
Definition: realslider.h:37
double getValue() const
void setRealStepValue(double step)
Definition: realslider.h:64
void setRealValue(double val)
Definition: realslider.h:55
RealSlider(QWidget *parent=nullptr)
Definition: realslider.h:42


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 03:48:10