Gui: Implement validator for ExpressionLineEdit

As requested in issue 21426 a leading '=' shouldn't be allowed in the edit field. The validator now explicitly disallows a leading
'=' in the text. In the future the validator can be extended.

This fixes issue 21426
This commit is contained in:
wmayer
2025-05-18 10:58:39 +02:00
committed by Chris Hennes
parent cece88a20f
commit d09055501d
2 changed files with 33 additions and 0 deletions

View File

@@ -890,6 +890,27 @@ void ExpressionCompleter::slotUpdate(const QString& prefix, int pos)
}
}
ExpressionValidator::ExpressionValidator(QObject* parent)
: QValidator(parent)
{}
void ExpressionValidator::fixup(QString &input) const
{
if (input.startsWith(QLatin1String("="))) {
input = input.mid(1);
}
}
QValidator::State ExpressionValidator::validate(QString &input, int &pos) const
{
if (input.startsWith(QLatin1String("="))) {
pos = 0;
return QValidator::Invalid;
}
return QValidator::Acceptable;
}
ExpressionLineEdit::ExpressionLineEdit(QWidget* parent,
bool noProperty,
char checkPrefix,
@@ -902,6 +923,7 @@ ExpressionLineEdit::ExpressionLineEdit(QWidget* parent,
, checkInList(checkInList)
, checkPrefix(checkPrefix)
{
setValidator(new ExpressionValidator(this));
connect(this, &QLineEdit::textEdited, this, &ExpressionLineEdit::slotTextChanged);
}