diff --git a/src/QtUtil/QtDoubleTextField.cpp b/src/QtUtil/QtDoubleTextField.cpp index 622d976..d1dbeca 100644 --- a/src/QtUtil/QtDoubleTextField.cpp +++ b/src/QtUtil/QtDoubleTextField.cpp @@ -19,6 +19,7 @@ USE_ENCODING_AUTODETECTION QtDoubleTextField::QtDoubleTextField (QWidget* parent, bool autoValidation, const char* name) : QtValidatedTextField (parent, autoValidation, name) + , _keepIosBaseDefault(false) { createGui ( ); } // QtDoubleTextField::QtDoubleTextField @@ -26,14 +27,16 @@ QtDoubleTextField::QtDoubleTextField (QWidget* parent, bool autoValidation, cons QtDoubleTextField::QtDoubleTextField (double value, QWidget* parent, bool autoValidation, const char* name) : QtValidatedTextField (parent, autoValidation, name) + , _keepIosBaseDefault(false) { createGui ( ); setValue (value); } // QtDoubleTextField::QtDoubleTextField -QtDoubleTextField::QtDoubleTextField (const QtDoubleTextField&) +QtDoubleTextField::QtDoubleTextField (const QtDoubleTextField& field) : QtValidatedTextField (0, 0) + , _keepIosBaseDefault(field._keepIosBaseDefault) { assert (0 && "QtDoubleTextField::QtDoubleTextField is not allowed."); } // QtDoubleTextField::QtDoubleTextField (const QtDoubleTextField&) @@ -102,10 +105,17 @@ void QtDoubleTextField::setValue (double value) } // if ((value < validator.bottom ( )) || (value > validator.top ( ))) // On évite de perdre des epsilons avec le format d'affichage par défaut des streams c++ : - UTF8String us; - us << (QDoubleValidator::StandardNotation == getNotation ( ) ? ios_base::fixed : ios_base::scientific); - us << IN_UTIL setprecision (validator.decimals ( )) << value; - setText (UTF8TOQSTRING (us)); + if (_keepIosBaseDefault) + { + setText (QString::number(value)); + } + else + { + UTF8String us; + us << (QDoubleValidator::StandardNotation == getNotation ( ) ? ios_base::fixed : ios_base::scientific); + us << IN_UTIL setprecision (validator.decimals ( )) << value; + setText (UTF8TOQSTRING (us)); + } getValue ( ); } // QtDoubleTextField::setValue @@ -156,8 +166,9 @@ QDoubleValidator::Notation QtDoubleTextField::getNotation ( ) const } // QtDoubleTextField::getNotation -void QtDoubleTextField::setNotation (QDoubleValidator::Notation notation) +void QtDoubleTextField::setNotation (QDoubleValidator::Notation notation, bool keepIosBaseDefault) { + _keepIosBaseDefault = keepIosBaseDefault; const QDoubleValidator& old = getValidator ( ); if (notation == old.notation ( )) return; diff --git a/src/QtUtil/public/QtUtil/QtDoubleTextField.h b/src/QtUtil/public/QtUtil/QtDoubleTextField.h index 5cd0ec2..43e5e4e 100644 --- a/src/QtUtil/public/QtUtil/QtDoubleTextField.h +++ b/src/QtUtil/public/QtUtil/QtDoubleTextField.h @@ -90,7 +90,7 @@ class QtDoubleTextField : public QtValidatedTextField /** * @param La notation utilisée. */ - virtual void setNotation (QDoubleValidator::Notation notation); + virtual void setNotation (QDoubleValidator::Notation notation, bool keepIosBaseDefault = false); protected : @@ -124,6 +124,8 @@ class QtDoubleTextField : public QtValidatedTextField /** Opérateur de copie. Interdit. */ QtDoubleTextField& operator = (const QtDoubleTextField&); + + bool _keepIosBaseDefault; }; // class QtDoubleTextField