21 #include <QRegularExpressionValidator>
22 #include <QRegularExpression>
28 const QString
PERMISSIVE_DOUBLE = R
"(-?[\d]{0,1000}([\.%1][\d]{0,1000})?(e[+-]?[\d]{0,%2})?)";
31 : QRegularExpressionValidator( parent )
32 , mMinimum( std::numeric_limits<qreal>::lowest() )
33 , mMaximum( std::numeric_limits<qreal>::max() )
36 const QRegularExpression reg(
PERMISSIVE_DOUBLE.arg( locale().decimalPoint() ).arg( 1000 ) );
37 setRegularExpression( reg );
41 : QRegularExpressionValidator( parent )
45 setRegularExpression( expression );
49 : QRegularExpressionValidator( parent )
54 const QRegularExpression reg(
PERMISSIVE_DOUBLE.arg( locale().decimalPoint() ).arg( 1000 ) );
55 setRegularExpression( reg );
59 : QRegularExpressionValidator( parent )
64 const QRegularExpression reg(
PERMISSIVE_DOUBLE.arg( locale().decimalPoint() ).arg( QString::number( decimal ) ) );
65 setRegularExpression( reg );
69 : QRegularExpressionValidator( parent )
70 , mMinimum( std::numeric_limits<qreal>::lowest() )
71 , mMaximum( std::numeric_limits<qreal>::max() )
74 const QRegularExpression reg(
PERMISSIVE_DOUBLE.arg( locale().decimalPoint() ).arg( QString::number( decimal ) ) );
75 setRegularExpression( reg );
80 const QRegularExpression reg(
PERMISSIVE_DOUBLE.arg( locale().decimalPoint() ).arg( QString::number( maxDecimals ) ) );
81 setRegularExpression( reg );
86 if ( input.isEmpty() )
94 if ( regularExpression().match( input ).captured( 0 ) == input )
100 if ( entered >= mMinimum && entered <= mMaximum && regularExpression().match( input ).captured( 0 ) == input )
108 if ( input.isEmpty() )
116 if ( regularExpression().match( input ).captured( 0 ) == input )
122 if ( entered >= mMinimum && entered <= mMaximum && regularExpression().match( input ).captured( 0 ) == input )
136 double value = QLocale().toDouble( input, ok );
140 value = QLocale( QLocale::C ).toDouble( input, ok );
143 if ( ! *ok && !( QLocale().numberOptions() & QLocale::NumberOption::OmitGroupSeparator ) )
145 value = QLocale( ).toDouble( QString( input ).replace( QLocale().groupSeparator(), QString() ), ok );