2011-07-05 36 views
1

我正在使用QlineEdit創建一個名稱字段。我想輸入這個字段中的條目,使得每個單詞的第一個字符總是大寫。我不知道如何設置的輸入掩碼,任何人都可以請幫我.. 日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可能會這樣做。