Hm.. coś nie mogę sobie poradzić z przygotowaniem własnego validatora, pomimo iż mam przykład od @MarekR22 wyłożony na tacy :( (link: http://4programmers.net/Forum/C_i_C++/222411-walidacja_danych_w_lineeditach )
Może pokaże co mam:
(jest to coś eksperymentalny kod, ponieważ nie mogę załapać "tematu", dlaczego (albo jak to zrobić?) po wywołaniu fixup nie "odświeża" mi wartości w poprzednim QLineEdit .. )
edit//
dodane: input = final;
class Validator : public QValidator
{
Q_OBJECT
public:
Validator(QObject * parent = 0);
Validator::State validate(QString &str, int &pos) const;
void fixup(QString &str) const;
};
Validator::Validator(QObject * parent) :
QValidator(parent)
{
}
QValidator::State Validator::validate(QString &input, int &pos) const
{
if (input.isEmpty())
return Acceptable;
quint16 i = input.toInt();
qDebug() << i;
if ((i < 1 || i > 5))
return Intermediate;
return Acceptable;
}
void Validator::fixup(QString &input) const
{
QString final;
for (int i = 0; i < input.length(); ++i) {
QChar c = input.at(i);
qDebug() << c;
if (c.isDigit())
final += c;
}
input += locale().toString(9);
input = final;
}
podsumowując: co mam dodać, aby odświeżać wartość w QLineEdit po wywołaniu fixup (z tego przykładu od @MarekR22 (nie wiedząc czemu .. ) nie mogę tego zlokalizować..)