mirror of https://github.com/EspoTek/Labrador.git
54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#include "espospinbox.h"
|
|
|
|
espoSpinBox::espoSpinBox(QWidget *parent) : QDoubleSpinBox(parent)
|
|
{
|
|
//connect(this, SIGNAL(valueChanged(double)), this, SLOT(changeStepping(double)));
|
|
}
|
|
|
|
QString espoSpinBox::textFromValue(double value) const{
|
|
QString windowText;
|
|
if (value == 0){
|
|
QTextStream(&windowText) << value;
|
|
return windowText;
|
|
}
|
|
if (value >= 1000000){
|
|
QTextStream(&windowText) << value/1000000 << "M";
|
|
return windowText;
|
|
}
|
|
if (value >= 1000){
|
|
QTextStream(&windowText) << value/1000 << "k";
|
|
return windowText;
|
|
}
|
|
if (value >= 1){
|
|
QTextStream(&windowText) << value;
|
|
return windowText;
|
|
}
|
|
if (value >= 1/1000){
|
|
QTextStream(&windowText) << value * 1000 << "m";
|
|
return windowText;
|
|
}
|
|
if (value >= 1/1000000){
|
|
QTextStream(&windowText) << value * 1000000 << "u";
|
|
return windowText;
|
|
}
|
|
return "invalid";
|
|
}
|
|
|
|
void espoSpinBox::maximumChanged(double linked){
|
|
this->setMaximum(9.6-linked);
|
|
}
|
|
|
|
void espoSpinBox::setMax(double newMax){
|
|
this->setMaximum(newMax);
|
|
}
|
|
|
|
void espoSpinBox::setMin(double newMin){
|
|
this->setMinimum(newMin);
|
|
}
|
|
|
|
void espoSpinBox::changeStepping(double value){
|
|
double roundval = pow(10.0, floor(log10(value))); //http://stackoverflow.com/questions/22491505/how-to-round-down-to-the-nearest-power-of-10
|
|
roundval = (roundval == 0) ? 0.1 : roundval/10;
|
|
setSingleStep(roundval);
|
|
}
|