From 9b1994cdb74e5dd50d3cd80c43e3f4db82a55ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Maier?= Date: Thu, 5 Jun 2025 12:27:35 +0200 Subject: [PATCH] Fix unit spinbox prefix handling --- src/customwidgets/mydoublespinboxwithunits.cpp | 9 +++++++-- src/customwidgets/mydoublespinboxwithunits.h | 1 - 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/customwidgets/mydoublespinboxwithunits.cpp b/src/customwidgets/mydoublespinboxwithunits.cpp index 374012a..f012afc 100644 --- a/src/customwidgets/mydoublespinboxwithunits.cpp +++ b/src/customwidgets/mydoublespinboxwithunits.cpp @@ -46,7 +46,8 @@ QString MyDoubleSpinBoxWithUnits::textFromValue(double val) const { return (QString::number(val, 'g', 3) + " "); } - return (floatToNiceString(val, 4, false, false, trimDecimalZeroes)); + UnitOfMeasure unit = useUnitPrefix ? UnitOfMeasure("-") : UnitOfMeasure(""); + return (floatToNiceString(val, 4, false, false, trimDecimalZeroes, unit)); } double MyDoubleSpinBoxWithUnits::valueFromText(const QString &text) const { @@ -54,6 +55,9 @@ double MyDoubleSpinBoxWithUnits::valueFromText(const QString &text) const { SimpleExpressionParser parser; if (!suffix().isEmpty()) expr = expr.left(expr.lastIndexOf(suffix())); + expr = expr.trimmed(); + if (expr.isEmpty()) + return emptyDefaultValue; bool isOK; double newValue = parser.evaluate(expr, &isOK); if (isOK) @@ -89,7 +93,8 @@ void MyDoubleSpinBoxWithUnits::stepBy(int steps) { void MyDoubleSpinBoxWithUnits::setUnit(UnitOfMeasure unit) { QDoubleSpinBox::setSuffix(unit.text); - this->useUnitPrefix = unit.mode == UnitOfMeasure::time || UnitOfMeasure::usePrefix; + this->useUnitPrefix = + (unit.mode == UnitOfMeasure::time || unit.mode == UnitOfMeasure::usePrefix); } void MyDoubleSpinBoxWithUnits::showEvent(QShowEvent *event) { diff --git a/src/customwidgets/mydoublespinboxwithunits.h b/src/customwidgets/mydoublespinboxwithunits.h index 02100dd..5d07a7e 100644 --- a/src/customwidgets/mydoublespinboxwithunits.h +++ b/src/customwidgets/mydoublespinboxwithunits.h @@ -53,7 +53,6 @@ class MyDoubleSpinBoxWithUnits : public QDoubleSpinBox { QString textFromValue(double val) const; double valueFromText(const QString &text) const; bool useUnitPrefix = true; - QString replaceUnitPrefixes(QString expr) const; signals: };