2011-07-05 2 views
1

QlineEdit을 사용하여 이름 필드를 만들고 있습니다. 이 필드의 항목을 입력하여 모든 단어의 첫 번째 문자가 항상 대문자가되도록하십시오. 나는 내가 inputMask 확실하지 않다 미리 thnx ..Qt에서 QlineEdit 사용자 정의하기

답변

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))); 
4

.. 누군가가 나를 도와주세요 수, 그에 대한 inputmask을 설정하는 방법을 모른다, 그러나 당신은 QValidator를 서브 클래 싱하여 수행 할 수 있습니다, 또는 QRegExpValidator을 사용할 수 있습니다.

+0

그래, 서브 클래스 QValidator하고 QValidator이 :: 픽스 업(), 내가 말할 것 구현할. –

0

QLineEdit의 하위 클래스를 정의하고 keyPressEvent을 재정의 할 수 있습니다. QValidator는 주로 좋은 입력을 생성하는 것과 반대되는 잘못된 입력을 금지하기위한 것이지만,이 간단한 경우는 fixup 일 것입니다.

관련 문제