File indexing completed on 2024-05-12 17:12:39

0001 #include <QDebug>
0002 
0003 #include "realslider.h"
0004 
0005 RealSlider::RealSlider(QWidget* parent) : QSlider(parent), m_start(0.0), m_end(1.0), m_step(0.01)
0006 {
0007     updateRange();
0008     connect(this, &RealSlider::sliderMoved, this, &RealSlider::internalValueChanged);
0009 }
0010 
0011 qreal RealSlider::start() const
0012 {
0013     return m_start;
0014 }
0015 
0016 void RealSlider::setStart(const qreal& start)
0017 {
0018     m_start= start;
0019     updateRange();
0020 }
0021 
0022 qreal RealSlider::end() const
0023 {
0024     return m_end;
0025 }
0026 
0027 void RealSlider::setEnd(const qreal& end)
0028 {
0029     m_end= end;
0030     updateRange();
0031 }
0032 
0033 qreal RealSlider::step() const
0034 {
0035     return m_step;
0036 }
0037 
0038 void RealSlider::setStep(const qreal& step)
0039 {
0040     m_step= step;
0041     updateRange();
0042 }
0043 
0044 void RealSlider::updateRange()
0045 {
0046     qreal val= m_end - m_start;
0047     qreal num= val / m_step;
0048 
0049     setMaximum(num);
0050     setMinimum(0);
0051     setSingleStep(1);
0052 }
0053 
0054 void RealSlider::setRealValue(qreal v)
0055 {
0056     setValue(v * maximum());
0057 }
0058 
0059 void RealSlider::internalValueChanged(int x)
0060 {
0061     if(0 != maximum())
0062     {
0063         qreal y= static_cast<qreal>(x) / static_cast<qreal>(maximum());
0064         emit valueChanged(y);
0065     }
0066 }