天天看點

Qt自定義密碼框,先顯示後隐藏

        現在很多應用在密碼輸入時,會先顯示一段時間,大概幾百毫秒,然後再變成星号或者圓點隐藏起來。這樣做的好處是,可以讓密碼輸入者看到自己輸入的字元,同時又防止密碼被偷窺。但是Qt自帶的密碼輸入框,要麼輸入時立即變成圓點,要麼全部輸入完後再一起變成圓點。

       要實作先顯示後隐藏的效果其實很簡單,隻需重載QLineEdit類,然後在連接配接光标位置變化信号(cursorPositionChanged)和文本編輯信号(textEdited)的槽中做相應的處理。這兩個信号對應的槽函數如下所示。

void QPasswordLineEdit::slotTextEdited(const QString& text)
{
    if(text.count()>mLastCharCount)//輸入
    {
        mLineEditText.append(text.right(1));
    }
    else if(text.count()<mLastCharCount)//删除
    {
        mLineEditText.remove(mLineEditText.count()-1,1);
    }
    mLastCharCount = mLineEditText.count();
}
           

        當文本框的字元串長度大于之前儲存的字元串的長度,說明正在輸入,并将輸入的這一個字元儲存到全局變量mLineEditText中;當文本框的字元串長度小于之前儲存的字元串長度,說明正在删除,并從全局變量mLineEditText中去掉最近輸入的那個字元。

void QPasswordLineEdit::slotCursorPositionChanged(int o