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

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

2

Решение

Вы можете просто применить принцип «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 (). Если языковой стандарт по умолчанию не задан, это языковой стандарт операционной системы.

а также:

State QValidator :: validate (QString & вход, инт & pos) const [чисто виртуальный]

Эта виртуальная функция возвращает Invalid, если ввод недействителен в соответствии с правилами этого валидатора, Intermediate, если есть вероятность, что небольшое редактирование сделает ввод приемлемым (например, пользователь вводит «4» в виджет, который принимает целые числа от 10 до 99), и Приемлемо, если ввод действителен.
Функция может изменить как вход, так и pos (положение курсора), если это необходимо.

Если у вас есть собственная реализация валидатора, вы можете использовать следующий установщик: QLineEdit чтобы фактически использовать вашу проверку:

void QLineEdit :: setValidator (const QValidator * v)

Устанавливает редактирование этой строки, чтобы принимать только те входные данные, которые принимает валидатор v. Это позволяет вам устанавливать любые произвольные ограничения на текст, который может быть введен.
Если v == 0, setValidator () удаляет текущий входной валидатор. Первоначальная настройка состоит в том, чтобы не иметь валидатора ввода (т. Е. Любой ввод принимается вплоть до maxLength ()).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]