Мне нужен этот случай QLineEdit
был всегда ниже. Я буду использовать его с русскими буквами.
Вы можете просто применить принцип «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 ()).
Других решений пока нет …