- 博客主页:Duck Bro 博客主页
- 系列专栏:Qt 专栏
- 关注博主,后期持续更新系列文章
- 如果有错误感谢请大家批评指出,及时修改
- 感谢大家点赞👍收藏⭐评论✍
Qt常用控件 | 输入类控件 | Line Edit的使用及说明
文章编号:Qt 学习笔记 / 28
文章目录
一、QLineEdit介绍
1. 简介
QLineEdit 用来表示单行输⼊框. 可以输入⼀段文本, 但是不能换行.
QLineEdit 是 Qt 框架中的一个小部件,用于接收和显示单行文本。它可以用于接收用户的输入,也可以用于显示程序输出的结果。
QLineEdit 具有许多功能,包括自动完成、输入限制、密码模式等。它还可以设置最大长度、光标样式、输入校验等。QLineEdit 可以被嵌入到其他 Qt 小部件中,如对话框、窗口等。
2. 常用属性及说明
属性 | 说明 |
---|---|
text | 输⼊框中的⽂本 |
inputMask | 输⼊内容格式约束 |
maxLength | 最⼤⻓度 |
frame | 是否添加边框 |
echoMode | 显⽰⽅式. • QLineEdit::Normal :这是默认值,⽂本框会显⽰输⼊的⽂本。 • QLineEdit::Password :在这种模式下,输⼊的字符会被隐藏,通常⽤星号(*)或等号(=)代替。 • QLineEdit::NoEcho :在这种模式下,⽂本框不会显⽰任何输⼊的字符。 |
cursorPosition | 光标所在位置 |
alignment | ⽂字对⻬⽅式, 设置⽔平和垂直⽅向的对⻬. |
dragEnabled | 是否允许拖拽 |
readOnly | 是否是只读的(不允许修改) |
placeHolderText | 当输⼊框内容为空的时候, 显⽰什么样的提⽰信息 |
clearButtonEnabled | 是否会⾃动显⽰出 “清除按钮” |
3. 重要信号及说明
属性 | 说明 |
---|---|
void cursorPositionChanged(int old, int new) | 当⿏标移动时发出此信号,old为先前的位置,new为新位置。 |
void editingFinished() | 当按返回或者回⻋键时,或者⾏编辑失去焦点时,发出此信号。 |
void returnPressed() | 当返回或回⻋键按下时发出此信号.如果设置了验证器, 必须要验证通过, 才能触发. |
void selectionChanged() | 当选中的⽂本改变时,发出此信号。 |
void textChanged(const QString &text) | 当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改能够触发这个信号. |
void textEdited(const QString &text)) | 当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改不能触发这个信号. |
二、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);
}
}