DoubleSlider.hpp
1 #pragma once
2 #include <QProxyStyle>
3 #include <QSlider>
4 
5 #include <score_lib_base_export.h>
6 
7 #include <limits>
8 #include <verdigris>
9 
10 namespace score
11 {
18 class SCORE_LIB_BASE_EXPORT DoubleSlider : public QWidget //: public QSlider
19 {
20  W_OBJECT(DoubleSlider)
21 public:
22  DoubleSlider(Qt::Orientation ort, QWidget* widg);
23  DoubleSlider(QWidget* widg);
24  ~DoubleSlider() override;
25  bool moving = false;
26  void setValue(double val);
27  void setOrientation(Qt::Orientation ort) { m_orientation = ort; }
28  void setBorderWidth(double border) { m_borderWidth = border; }
29 
30  double value() const { return m_value; }
31  virtual double map(double v) const;
32  virtual double unmap(double v) const;
33  double min{}; //TODO make it private. Warning used like this in a lot of places.
34  double max{}; //ditto
35 
36  void valueChanged(double arg_1) E_SIGNAL(SCORE_LIB_BASE_EXPORT, valueChanged, arg_1)
37  void sliderMoved(double arg_1) E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderMoved, arg_1)
38  void sliderReleased() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderReleased)
39 
40  void mousePressEvent(QMouseEvent* event) override;
41  void mouseMoveEvent(QMouseEvent* event) override;
42  void mouseReleaseEvent(QMouseEvent* event) override;
43  virtual void createPopup(QPoint pos);
44  virtual void setRange(double min, double max) noexcept;
45 
46 protected:
47  void paintEvent(QPaintEvent*) override;
48  void paint(QPainter& p);
49  void paintWithText(const QString& s);
50 
51 private:
52  void updateValue(QPointF mousePos);
53 
54  double m_value{};
55  Qt::Orientation m_orientation{};
56  double m_borderWidth{};
57 };
58 }
The DoubleSlider class.
Definition: DoubleSlider.hpp:19
Base toolkit upon which the software is built.
Definition: Application.cpp:90