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("[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()函数来获得、显示文字,没想到一个简单的控件背后还有这么多功能和用法。当然还有其它的方法,还需要继续探索。

猜你喜欢

转载自blog.csdn.net/lusanshui/article/details/84306402