Контроль регистра первого символа в QLineEdit

133
11 марта 2018, 23:25

Нужно в форму LineEdit ввести текст, который обязательно должен начинаться с заглавной буквы.

Каким образом можно записать проверку (на регистр первой буквы), перевести в заглавный регистр (есть ф-я toapper(), но она не работает с классом QString) и в "автоматическом" режиме заменить самую первую букву формы LineEdit на заглавную?

Также не совсем понятно, какой сигнал нужно выбирать при переходе к слоту ( пробовал editingFinished() ):

Я пытался сделать перевод в верхний регистр таким образом:

QString s[50] = ui -> lineEdit -> text();
QString str;
s[0] = str;
str = str.toUpper();

Но как дальше присвоить значение str форме LineEdit не совсем понял (да и подход, наверно, неправильный).

Answer 1

Установите валидатор при помощи setValidator, в качестве валидатора можно использовать свой класс-наследник QValidator (он довольно просто создаётся), у него можно переопределить метод fixup, который исправит пользовательский ввод. Или можно просто использовать регулярное выражение при помощи QRegExpValidator, но тогда не получится исправлять ввод автоматически.

READ ALSO
С++ Задача на спички

С++ Задача на спички

Есть задача на C++Задачу вроде решил правильно, ответы выводит нужные, но когда загружаю решение пишет ошибку

229
Что означает параметр tcpi_rcv_rtt в структуре tcp_info?

Что означает параметр tcpi_rcv_rtt в структуре tcp_info?

В структуре tcp_info описаны вот такие параметры, описывающие RTT:

159
/DEBUG:FASTLINK в visual studio

/DEBUG:FASTLINK в visual studio

При компиляции проекта в visual studio выдаётся следующая ошибка:

187