【Qt 学习笔记】Qt常用控件 | 输入类控件 | Line Edit的使用及说明

发布于:2024-04-28 ⋅ 阅读:(28) ⋅ 点赞:(0)

  • 博客主页: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. 简易的用户登录界面

  1. 在界⾯上创建三个输⼊框和两个单选按钮, ⼀个普通按钮
    在这里插入图片描述
  2. 编写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");

}
  1. 编写按钮生成的槽函数,让其在日志中打印输入的内容
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();
}

  1. 运行代码,查看结果在日志中输出结果
    在这里插入图片描述
    在这里插入图片描述

文件代码:

#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. 验证两次输入的密码一致

  1. 创建⼀个输⼊框和⼀个复选按钮
    在这里插入图片描述
  2. 右键输入框,点击转到槽,选择textEdited(QString)
    在这里插入图片描述
    在这里插入图片描述
  3. 修改 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);
}
  1. 给两个输⼊框设置 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("两次输⼊的密码不同!");
    }
}
  1. 运行代码,查看效果
    在这里插入图片描述

文件代码:

#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. 显示密码

  1. 创建⼀个输⼊框和⼀个复选按钮
    在这里插入图片描述
  2. 编辑widget.cpp文件,将输入框的内容设置为隐藏密码
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->lineEdit->setEchoMode(QLineEdit::Password);
}
  1. 右键点击生成槽函数选择toggle(bool)
    在这里插入图片描述
  2. 编辑槽函数
void Widget::on_checkBox_toggled(bool checked)
{
    if(checked)
    {
        ui->lineEdit->setEchoMode(QLineEdit::Normal);
    }
    else
    {
        ui->lineEdit->setEchoMode(QLineEdit::Password);
    }
}
  1. 运行代码,查看结果
    在这里插入图片描述

文件代码:

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

在这里插入图片描述