QLindEdit部件是一个单行的文本编辑器,它允许用户输入和编辑单行的纯文本内容,拥有许多功能,下面一一介绍。
QLineEdit的构造函数:

常见的一些函数:
| setText(),insert() | 设置内容 |
| text() | 获取控件内容 |
| setEchoMode(QLineEdit::Normal) | 设置输入形式 |
| setMaxLength() | 设置输入的最大长度 |
| isReadOnly() | 设置只读 |
| setChanged() | 监测内容是否变化 |
| setInputMask() | 输入掩码来限制内容 |
| hasAcceptableInput() | 检测是否符合掩码规则 |
| setFocus() | 获得焦点 |
信号: QLineEdit::returnPressed | 按下回车 |
| setValidator() | 设置验证器 |
| setPlaceholderText() | 输入提示内容 |
| QLineEdit::Normal | 在输入字符时显示字符。这是默认值。 |
| QLineEdit::NoEcho | 不显示任何内容。这可能适用于密码,甚至密码的长度也应保密 |
| QLineEdit::Password | 显示与平台相关的密码掩码字符,而不是实际输入的字符。 |
| QLineEdit::PasswordEchoOnEdit | 在编辑时显示输入的字符,否则显示字符。password |
第一种:直接输出

第二种:输入时不会显示任何内容
![]()
第三种:用●代替内容
![]()
第四种:
输入时,可以看到
![]()
不输入时,变成●



- 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类实现。

- 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);//设置自动补全



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);
- });
- }

