QLindEdit部件是一个单行的文本编辑器,它允许用户输入和编辑单行的纯文本内容,拥有许多功能,下面一一介绍。
QLineEdit的构造函数:
常见的一些函数:
setText(),insert() | 设置内容 |
text() | 获取控件内容 |
setEchoMode(QLineEdit::Normal) | 设置输入形式 |
setMaxLength() | 设置输入的最大长度 |
isReadOnly() | 设置只读 |
setChanged() | 监测内容是否变化 |
setInputMask() | 输入掩码来限制内容 |
hasAcceptableInput() | 检测是否符合掩码规则 |
setFocus() | 获得焦点 |
信号: QLineEdit::returnPressed | 按下回车 |
setValidator() | 设置验证器 |
setPlaceholderText() | 输入提示内容 |
setEchoMode(QLineEdit::xxx)设置输入格式:
QLineEdit::Normal | 在输入字符时显示字符。这是默认值。 |
QLineEdit::NoEcho | 不显示任何内容。这可能适用于密码,甚至密码的长度也应保密 |
QLineEdit::Password | 显示与平台相关的密码掩码字符,而不是实际输入的字符。 |
QLineEdit::PasswordEchoOnEdit | 在编辑时显示输入的字符,否则显示字符。password |
第一种:直接输出
第二种:输入时不会显示任何内容
第三种:用●代替内容
第四种:
输入时,可以看到
不输入时,变成●
inputMask()掩码的介绍:
resize(600,600);
QLineEdit *line=new QLineEdit(this);
line->setGeometry(100,100,200,30);
line->setInputMask(">AAAAAAAAA!");
信号QLineEdit::returnPressed()的使用
resize(600,600);
QLineEdit *line=new QLineEdit(this);
line->setGeometry(100,100,200,30);
connect(line,&QLineEdit::returnPressed,[=]()
{
qDebug()<<line->text();
});
按下回车后
验证器:
在QLineEdit中可以使用验证器来对输入进行约束:
QValidator验证器:
整形验证器: QValidator *vdr=new QIntValidator(min,max,parent);
最小值,最大值,父类
浮点型验证器:QValidator *vdr1=new QDoubleValidator(min,max,number,parent);
最小值,最大值,小数点后位数,父类
QLineEdit *line=new QLineEdit(this);
QValidator *vdr=new QIntValidator(100,200,this);//值的取值范围100-200(Int型)
QValidator *vdr1=new QDoubleValidator(10.0,299.99,5,this);//值的取值范围10-299.99(double型)
line->setValidator(vdr);//设置验证器
自动补全:
QLineEdit中也提供了强大的自动补全的功能,使用QCompleter类实现。
QCompleter的构造函数
QComplater的使用:
resize(600,600);
QLineEdit *line=new QLineEdit(this);
line->move(100,100);
//设置内容
QStringList list1;
list1<<"11111"<<"22222"<<"33333";
QCompleter *complate=new QCompleter(list1,this);
complate->setCaseSensitivity(Qt::CaseSensitive);//设置大小写不敏感
line->setCompleter(complate);//设置自动补全
使用QLineEdit实现一个登录页面:
1.在widget.h中添加以下控件
QLabel *label1;//账号
QLabel *label2;//密码
QLineEdit *line1;//账号输入
QLineEdit *line2;//密码输入
QPushButton *push;//登录按钮
2.在Widget.cpp中实现功能
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
resize(600,600);
label1=new QLabel(this);
label2=new QLabel(this);
line1=new QLineEdit(this);
line2=new QLineEdit(this);
push=new QPushButton(this);
line1->setPlaceholderText("请输入账号");//输入提示信息
line2->setPlaceholderText("请输入密码");//输入提示信息
label1->setText("账号:");
label2->setText("密码:");
label1->setGeometry(100,100,50,30);
label2->setGeometry(100,150,50,30);
line1->setGeometry(100+label1->width(),100,150,30);
line2->setGeometry(100+label2->width(),150,150,30);
line2->setEchoMode(QLineEdit::Password);//设置密码类型
line1->setMaxLength(12);//设置输入长度
line2->setMaxLength(12);//设置输入长度
push->setText("登录");
push->setGeometry(150,250,100,40);
//设置自动补全
QStringList list1;//账号
for(int i=0;i<10;i++)
{
int p=1111111*i;
list1<<QString::number(p);//添加账号,int转String
}
for (auto i:list1) {
qDebug()<<i;
}
QCompleter *com1=new QCompleter(list1,this);
com1->setCaseSensitivity(Qt::CaseInsensitive);//设置大小写不敏感
line1->setCompleter(com1);
QStringList list2;//存放密码
for(int i=0;i<10;i++)
{
list2<<QString::number(1111111*i);//添加密码
}
connect(push,&QPushButton::clicked,[=]()//点击按钮,判断账号密码是否正确
{
for(auto m:list1)
{
if(line1->text()==m&&line2->text()==m)
{
QMessageBox::information(this,"提示","登录成功",QMessageBox::Ok);
return;
}
}
QMessageBox::information(this,"提示","登录失败",QMessageBox::Ok);
});
}