1. 程式人生 > >QLineEdit提高使用者體驗的方法(密碼隱藏、背景提示文字、顯示可輸入字元的範圍)

QLineEdit提高使用者體驗的方法(密碼隱藏、背景提示文字、顯示可輸入字元的範圍)

1. 簡述

QLineEdit即單行文字編輯器,是Qt下常用的人機互動控制元件,用來接收使用者輸入的資訊。
QLineEdit並不像表面那麼簡單,下面介紹如何在QlineEdit下實現密碼自動隱藏、背景提示文字,以及控制輸入字元的範圍。
效果圖如下:
在這裡插入圖片描述

2. 程式碼之路

2.1 密碼隱藏

密碼隱藏就是使用者在輸入密碼等資訊時,輸入控制元件的資訊自動隱藏,而顯示特殊字元來標識顯示輸入文字的個數。
密碼隱藏有2種實現方式:
1) 在輸入每個字元期間都進行隱藏
使用QLineEdit的setEchoMode函式,舉例如下:

ui->lineEdit_passwd->setEchoMode(QLineEdit::Password);

2)輸入時顯示字元,失去焦點時隱藏
依然使用QLineEdit的setEchoMode函式,引數改變,舉例如下:

ui->lineEdit_passwd->setEchoMode(QLineEdit::PasswordEchoOnEdit);

2.2 背景文字

即使用者在輸入前顯示的提示性文字,實際控制元件的內容為空,輸入字元後提示的文字自動消失,變成使用者輸入的字元。
呼叫QLineEdit的setPlaceholderText函式即可,舉例如下:

ui->lineEdit_name->setPlaceholderText(QStringLiteral("使用者名稱為數字、字母或特殊字元"));

2.3 控制輸入範圍

使用正則表示式+過濾器的方法可以控制任意的輸入範圍。(QRegExp 類+QRegExpValidator類)
例如,限制使用者名稱為數字、英文和特殊字元組成的字串,可以用如下程式碼實現:

QRegExp rx("[[email protected]#%^&*()_]+$"); //建立一個正則表示式物件rx
QRegExpValidator *pReg = new QRegExpValidator(rx, this); //建立一個過濾器物件
ui->lineEdit_name->setValidator(pReg); //限制使用者名稱範圍
ui->lineEdit_passwd->setValidator(pReg); //限制密碼範圍

2.4 其它提高使用者體驗方法

可以用setFocus()函式設定焦點,從而使使用者無須選擇控制元件的步驟;
可以用setStyleSheet()方法改變字型、背景顏色等。

3. 感想

使用QLineEdit一直都是用text()和setText()函式來獲得、顯示文字,沒想到一個簡單的控制元件背後還有這麼多功能和用法。當然還有其它的方法,還需要繼續探索。