Мне нужно, чтобы регистр QLineEdit
всегда был ниже. Я буду использовать его с русскими буквами.
Как использовать маску QLineEdit с русскими буквами?
Ответы (1)
Вы можете просто применить принцип "toLower", хотя и не для QString
, так как это всегда обрабатывается с локалью "C", а QLocale
согласно документации Qt:
QString QLocale::toLower(const QString & str) const
Возвращает копию строки str в нижнем регистре. Эта функция была представлена в QtCore 4.8.
Вы также можете использовать QValidator
для QLineEdit
, если хотите (на основе вашего «первоначального запроса»):
void QValidator::setLocale(const QLocale и языковой стандарт)
Устанавливает локаль, которая будет использоваться для валидатора. Если setLocale не был вызван, валидатор будет использовать локаль по умолчанию, установленную с помощью QLocale::setDefault(). Если локаль по умолчанию не задана, это локаль операционной системы.
а также:
Состояние QValidator::validate(QString и input, int и pos) const [чистый виртуальный]
Эта виртуальная функция возвращает значение Invalid, если ввод является недопустимым в соответствии с правилами этого валидатора, Intermediate, если есть вероятность, что небольшое дополнительное редактирование сделает ввод приемлемым (например, пользователь вводит «4» в виджет, который принимает целые числа от 10 до 99), и Приемлемо, если ввод действителен. При необходимости функция может изменить как input, так и pos (положение курсора).
Если у вас есть собственная реализация валидатора, вы можете использовать следующий сеттер QLineEdit
, чтобы фактически использовать вашу валидацию:
void QLineEdit::setValidator(const QValidator * v)
Устанавливает это редактирование строки так, чтобы оно принимало только тот ввод, который примет валидатор v. Это позволяет вам накладывать любые произвольные ограничения на вводимый текст. Если v == 0, setValidator() удаляет текущий валидатор ввода. Первоначальная настройка — отсутствие валидатора ввода (т. е. любой ввод принимается до maxLength()).