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("[a-zA-Z0-9!@#%^&*()_]+$"); //创建一个正则表达式对象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()函数来获得、显示文字,没想到一个简单的控件背后还有这么多功能和用法。当然还有其它的方法,还需要继续探索。