2011-07-05 18 views
1

QlineEditを使用して名前フィールドを作成しています。私は、すべての単語の最初の文字が常に大文字になるように、このフィールドのエントリを入力します。私はinputMaskについてはよく分からないが、あなたはQValidatorをサブクラス化することでそれを行うことができます..誰も私を助けてください可能性があり、そのためにinputmaskを設定する方法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); 
    } 
} 

を接続:うん、サブクラスQValidator

connect(line_edit_0, SIGNAL(textChanged(QString)), this, SLOT(on_line_edit_0_text_changed(QString))); 
4

を事前に のthnxを知っているか、していませんQRegExpValidatorを使用できます。

+0

とQValidatorを再実装::フィックスアップ()、私が言うと思います。 –

0

QLineEditをサブクラス化し、keyPressEventを上書きすることができます。 QValidatorは、主に良い入力を生成するのではなく、悪い入力を禁止するためですが、この単純なケースでは、おそらくfixupが実行されます。

関連する問題