在Qt中自定义QlineEdit

时间:2011-07-05 10:25:23

标签: qt qlineedit

我正在使用QlineEdit制作名称字段。我希望输入此字段中的条目,使每个单词的第一个字符始终为大写。我不知道如何设置输入掩码,任何人都可以请帮助我.. thnx提前..

3 个答案:

答案 0 :(得分:4)

我不确定inputMask,但你可以通过继承QValidator来完成,或者你可以使用QRegExpValidator

答案 1 :(得分:0)

您可以继承QLineEdit并覆盖keyPressEvent。 QValidator主要用于禁止输入错误而不是生成好的输入,但对于这个简单的情况,fixup可能会这样做。

答案 2 :(得分:0)

这只是我提出的一个快速解决方案,当然还有更好的解决方案(例如,实现您自己的行编辑),但这在我测试时有效。

这是 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 ) ) );