UI: Add floating point slider control

This commit is contained in:
jp9000 2015-03-17 18:33:21 -07:00
parent dac3fd88e0
commit 17adf8f35e
3 changed files with 55 additions and 0 deletions

View File

@ -104,6 +104,7 @@ set(obs_SOURCES
window-log-reply.cpp
window-remux.cpp
properties-view.cpp
double-slider.cpp
volume-control.cpp
adv-audio-control.cpp
vertical-scroll-area.cpp
@ -131,6 +132,7 @@ set(obs_HEADERS
window-remux.hpp
properties-view.hpp
display-helpers.hpp
double-slider.hpp
volume-control.hpp
adv-audio-control.hpp
vertical-scroll-area.hpp

33
obs/double-slider.cpp Normal file
View File

@ -0,0 +1,33 @@
#include "double-slider.hpp"
DoubleSlider::DoubleSlider(QWidget *parent) : QSlider(parent)
{
connect(this, SIGNAL(valueChanged(int)),
this, SLOT(intValChanged(int)));
}
void DoubleSlider::setDoubleConstraints(double newMin, double newMax,
double newStep, double val)
{
minVal = newMin;
maxVal = newMax;
minStep = newStep;
double total = maxVal - minVal;
int intMax = int(total / minStep);
setMinimum(0);
setMaximum(intMax);
setSingleStep(1);
setDoubleVal(val);
}
void DoubleSlider::intValChanged(int val)
{
emit doubleValChanged(double(val) * minStep + minVal);
}
void DoubleSlider::setDoubleVal(double val)
{
setValue(int((val - minVal) / minStep));
}

20
obs/double-slider.hpp Normal file
View File

@ -0,0 +1,20 @@
#include <QSlider>
class DoubleSlider : public QSlider {
Q_OBJECT
double minVal, maxVal, minStep;
public:
DoubleSlider(QWidget *parent = nullptr);
void setDoubleConstraints(double newMin, double newMax,
double newStep, double val);
signals:
void doubleValChanged(double val);
public slots:
void intValChanged(int val);
void setDoubleVal(double val);
};