Я делаю поле имени, используя QlineEdit. Я хочу, чтобы запись в этом поле была введена таким образом, чтобы первый символ каждого слова всегда был в верхнем регистре. Я не знаю, как установить маску ввода для этого, может ли кто-нибудь помочь мне .. спасибо заранее ..
настройка QlineEdit в Qt
Ответы (3)
Это просто быстрое решение, которое я придумал, и, конечно, есть лучшие решения (например, реализация собственного редактирования строки), но это работает, как я тестировал.
Это SLOT:
void main_window::on_line_edit_0_text_changed( QString text )
{
QString tmp = text;
tmp.truncate( 1 ); // tmp is now first char of your text
tmp = tmp.toUpper();
if( text.size() > 1 )
{
text.remove( 0, 1 );
text = text.toLower();
text.prepend( tmp );
line_edit_0->setText( text );
}
else
{
line_edit_0->setText( tmp );
}
}
Подключение:
connect( line_edit_0, SIGNAL( textChanged( QString ) ), this, SLOT( on_line_edit_0_text_changed( QString ) ) );
person
Exa
schedule
06.07.2011
Я не уверен насчет inputMask
, но вы можете сделать это, создав подкласс QValidator. , или вы можете использовать QRegExpValidator.
person
Donotalo
schedule
05.07.2011
Да, я бы сказал, подкласс QValidator и повторная реализация QValidator::fixup().
- person Frank Osterfeld; 05.07.2011
Вы можете создать подкласс QLineEdit и переопределить keyPressEvent
. QValidator в первую очередь предназначен для запрета неверных входных данных, а не для создания хороших, но для этого простого случая, вероятно, подойдет fixup
.
person
spraff
schedule
05.07.2011