LibreVNA/Software/PC_Application/CustomWidgets/siunitedit.h
Jan Käberich 3d97e4ca20 Minor GUI improvements
- allow 'wrong' input for unit edits where only one case makes sense (e.g. 10mHz for 10MHz)
- fix behavior when changing center of span would exceed the allowed range
- only change value for level or points when editing is finished (not on every keyboard input)
2020-11-12 18:56:39 +01:00

35 lines
1,007 B
C++

#ifndef SIUNITEDIT_H
#define SIUNITEDIT_H
#include <QLineEdit>
class SIUnitEdit : public QLineEdit
{
Q_OBJECT
public:
SIUnitEdit(QString unit = QString(), QString prefixes = " ", int precision = 0, QWidget *parent = nullptr);
SIUnitEdit(QWidget *parent);
void setUnit(QString unit) { this->unit = unit; setValueQuiet(_value); }
void setPrefixes(QString prefixes) { this->prefixes = prefixes; setValueQuiet(_value); }
void setPrecision(int precision) { this->precision = precision; setValueQuiet(_value); }
double value() { return _value; }
public slots:
void setValue(double value);
void setValueQuiet(double value);
signals:
void valueChanged(double newvalue);
void valueUpdated(QWidget *w);
void editingAborted();
protected:
bool eventFilter(QObject *obj, QEvent *event) override;
private:
void parseNewValue(double factor);
void continueEditing();
QString unit, prefixes;
int precision;
double _value;
};
#endif // SIUNITEDIT_H