Qt常用控件 | 输入类控件 | Line Edit的使用及说明
一、QLineEdit介绍
1. 简介
QLineEdit 用来表示单行输⼊框. 可以输入⼀段文本, 但是不能换行.
QLineEdit 是 Qt 框架中的一个小部件,用于接收和显示单行文本。它可以用于接收用户的输入,也可以用于显示程序输出的结果。
QLineEdit 具有许多功能,包括自动完成、输入限制、密码模式等。它还可以设置最大长度、光标样式、输入校验等。QLineEdit 可以被嵌入到其他 Qt 小部件中,如对话框、窗口等。
2. 常用属性及说明
3. 重要信号及说明
二、QLineEdit的使用(代码示例)
1. 简易的用户登录界面
- 在界⾯上创建三个输⼊框和两个单选按钮, ⼀个普通按钮
- 编写widget.cpp文件,初始化输入框的内容,并设置一键删除选项
Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); //初始化第一个输入框 ui->lineEdit_name->setPlaceholderText("请输入账号"); ui->lineEdit_name->setClearButtonEnabled(true); //初始化第二个输入框 ui->lineEdit_password->setPlaceholderText("请输入密码"); ui->lineEdit_password->setClearButtonEnabled(true); //密码设置为隐藏密码 ui->lineEdit_password->setEchoMode(QLineEdit::Password); //初始化第三个输入框 ui->lineEdit_phone->setPlaceholderText("请输入电话"); ui->lineEdit_phone->setClearButtonEnabled(true); //验证手机号为11位数,按"344"格式来输入 ui->lineEdit_phone->setInputMask("000-0000-0000"); }
- 编写按钮生成的槽函数,让其在日志中打印输入的内容
void Widget::on_pushButton_clicked() { QString gender=ui->radioButton_male->isChecked() ? "男" : "女"; qDebug()<<"姓名:"<<ui->lineEdit_name->text() << "密码:" << ui->lineEdit_password->text()<< "性别: " << gender<< "手机: " << ui->lineEdit_phone->text(); }
运行代码,查看结果在日志中输出结果
文件代码:
#include "widget.h" #include "ui_widget.h" #include <QDebug> Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); //初始化第一个输入框 ui->lineEdit_name->setPlaceholderText("请输入账号"); ui->lineEdit_name->setClearButtonEnabled(true); //初始化第二个输入框 ui->lineEdit_password->setPlaceholderText("请输入密码"); ui->lineEdit_password->setClearButtonEnabled(true); //密码设置为隐藏密码 ui->lineEdit_password->setEchoMode(QLineEdit::Password); //初始化第三个输入框 ui->lineEdit_phone->setPlaceholderText("请输入电话"); ui->lineEdit_phone->setClearButtonEnabled(true); //验证手机号为11位数,按"344"格式来输入 ui->lineEdit_phone->setInputMask("000-0000-0000"); } Widget::~Widget() { delete ui; } void Widget::on_pushButton_clicked() { QString gender=ui->radioButton_male->isChecked() ? "男" : "女"; qDebug()<<"姓名:"<<ui->lineEdit_name->text() << "密码:" << ui->lineEdit_password->text()<< "性别: " << gender<< "手机: " << ui->lineEdit_phone->text(); }
2. 验证两次输入的密码一致
- 创建⼀个输⼊框和⼀个复选按钮
- 右键输入框,点击转到槽,选择textEdited(QString)
- 修改 widget.cpp, 设置输⼊框为隐藏密码
Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->lineEdit->setEchoMode(QLineEdit::Password); ui->lineEdit_2->setEchoMode(QLineEdit::Password); }
- 给两个输⼊框设置 textEdited slot 函数
void Widget::on_lineEdit_textEdited(const QString &arg1) { const QString& s1 = ui->lineEdit->text(); const QString& s2 = ui->lineEdit_2->text(); if (s1.isEmpty() && s2.isEmpty()) { ui->label->setText("密码为空!"); } else if (s1 == s2) { ui->label->setText("两次输⼊的密码相同!"); } else { ui->label->setText("两次输⼊的密码不同!"); } } void Widget::on_lineEdit_2_textEdited(const QString &arg1) { const QString& s1 = ui->lineEdit->text(); const QString& s2 = ui->lineEdit_2->text(); if (s1.isEmpty() && s2.isEmpty()) { ui->label->setText("密码为空!"); } else if (s1 == s2) { ui->label->setText("两次输⼊的密码相同!"); } else { ui->label->setText("两次输⼊的密码不同!"); } }
- 运行代码,查看效果
文件代码:
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->lineEdit->setEchoMode(QLineEdit::Password); ui->lineEdit_2->setEchoMode(QLineEdit::Password); } Widget::~Widget() { delete ui; } void Widget::on_lineEdit_textEdited(const QString &arg1) { const QString& s1 = ui->lineEdit->text(); const QString& s2 = ui->lineEdit_2->text(); if (s1.isEmpty() && s2.isEmpty()) { ui->label->setText("密码为空!"); } else if (s1 == s2) { ui->label->setText("两次输⼊的密码相同!"); } else { ui->label->setText("两次输⼊的密码不同!"); } } void Widget::on_lineEdit_2_textEdited(const QString &arg1) { const QString& s1 = ui->lineEdit->text(); const QString& s2 = ui->lineEdit_2->text(); if (s1.isEmpty() && s2.isEmpty()) { ui->label->setText("密码为空!"); } else if (s1 == s2) { ui->label->setText("两次输⼊的密码相同!"); } else { ui->label->setText("两次输⼊的密码不同!"); } }
3. 显示密码
- 创建⼀个输⼊框和⼀个复选按钮
- 编辑widget.cpp文件,将输入框的内容设置为隐藏密码
Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->lineEdit->setEchoMode(QLineEdit::Password); }
- 右键点击生成槽函数选择
toggle(bool)
- 编辑槽函数
void Widget::on_checkBox_toggled(bool checked) { if(checked) { ui->lineEdit->setEchoMode(QLineEdit::Normal); } else { ui->lineEdit->setEchoMode(QLineEdit::Password); } }
运行代码,查看结果
文件代码:
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->lineEdit->setEchoMode(QLineEdit::Password); } Widget::~Widget() { delete ui; } void Widget::on_checkBox_toggled(bool checked) { if(checked) { ui->lineEdit->setEchoMode(QLineEdit::Normal); } else { ui->lineEdit->setEchoMode(QLineEdit::Password); } }