Как использовать маску QLineEdit с русскими буквами?

Мне нужно, чтобы регистр QLineEdit всегда был ниже. Я буду использовать его с русскими буквами.


person punksta    schedule 05.10.2013    source источник


Ответы (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()).

person lpapp    schedule 05.10.2013
comment
Благодарю вас! Я просто подумал, что toLower работает только с латиницей. - person punksta; 05.10.2013