Написать валидатор даты на QtCreator с использованием класса QValidator

Пытаюсь реализовать логику валидатора, который проверяет вводимую пользователем строку по шаблону: шаблон: 1234 г. (до) н.э. Если строка полностью корректна: return QValidator::Acceptable Если строка не содержит ошибок, но она неполная: return QValidator::Intermediate Если строка неверная: return QValidator::Invalid

Использовать регулярные выражения нельзя

Мой код ниже:

ExampleValidator::ExampleValidator(QObject *parent): QValidator(parent){}

ExampleValidator::~ExampleValidator(){}

QValidator::State ExampleValidator::validate( QString &input, int &pos ) const
{
    QString inputValue = input.trimmed().toLower();
    QStringList inputWords = input.split(" ");

    bool isYearValid;

    int year = inputWords[0].toInt(&isYearValid);

    if (inputValue.isEmpty()) return QValidator::Intermediate;

    if (inputValue[0] == '0') return QValidator::Invalid;

    if (!isYearValid) return QValidator::Invalid;

    if (inputWords.size() < 3) return QValidator::Intermediate;

    if (inputWords.size() > 4) return QValidator::Invalid;

    if (inputWords[1] == "г.") return QValidator::Acceptable;

    if (inputWords[1] != "г.") return QValidator::Invalid;

    if (inputWords[2] == "н.э." && inputWords[3].isEmpty()) return QValidator::Invalid;

    if (inputWords[2] == "н.э." && !(inputWords[3].isEmpty())) return QValidator::Acceptable;

    if (inputWords[2] == "до" && inputWords[3] == "н.э.") return QValidator::Acceptable;

    if (inputWords[2] != "до" || inputWords[2] != "н.э.") return QValidator::Invalid;

    return QValidator::Acceptable;
}

Ответы (0 шт):