настройка QlineEdit в Qt - PullRequest
       14

настройка QlineEdit в Qt

1 голос
/ 05 июля 2011

Я создаю поле имени, используя QlineEdit.Я хочу, чтобы запись в этом поле вводилась так, чтобы первый символ каждого слова всегда был в верхнем регистре.Я не знаю, как установить маску ввода для этого, может кто-нибудь, пожалуйста, помогите мне .. спасибо заранее ..

Ответы [ 3 ]

4 голосов
/ 05 июля 2011

Я не уверен насчет inputMask, но вы можете сделать это, создав подкласс QValidator , или вы можете использовать QRegExpValidator .

0 голосов
/ 06 июля 2011

Это просто быстрое решение, которое я придумала, и, конечно, есть лучшие решения (например, реализовать собственное редактирование строки), но это работает, как я тестировал.

Это СЛОТ:

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 :

connect( line_edit_0, SIGNAL( textChanged( QString ) ), this, SLOT( on_line_edit_0_text_changed( QString ) ) );
0 голосов
/ 05 июля 2011

Вы можете создать подкласс QLineEdit и переопределить keyPressEvent.QValidator в первую очередь предназначен для запрета плохих входов, а не для генерации хороших, но для этого простого случая, вероятно, подойдет fixup.

...