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

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

Qt常用控件 | 输入类控件 | Line Edit的使用及说明

一、QLineEdit介绍

1. 简介

QLineEdit 用来表示单行输⼊框. 可以输入⼀段文本, 但是不能换行.

QLineEdit 是 Qt 框架中的一个小部件,用于接收和显示单行文本。它可以用于接收用户的输入,也可以用于显示程序输出的结果。


QLineEdit 具有许多功能,包括自动完成、输入限制、密码模式等。它还可以设置最大长度、光标样式、输入校验等。QLineEdit 可以被嵌入到其他 Qt 小部件中,如对话框、窗口等。

2. 常用属性及说明

image.png

3. 重要信号及说明

image.png

二、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();
}

运行代码,查看结果在日志中输出结果

文件代码:

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

  1. 修改 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);
    }
}

运行代码,查看结果

文件代码:

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


目录
相关文章
|
25天前
Qt类结构分析
Qt类结构分析
45 3
|
1月前
|
网络协议 Linux C++
【Qt】多种控件实现“hello world“
【Qt】多种控件实现“hello world“
|
20天前
|
设计模式 前端开发 安全
Qt注册类对象单例与单类型区别
在进行开发时,应当根据具体的应用场景和需求来选择使用单例模式或是单类型。如果是全局服务或状态管理,可能需要单例模式;如果是为了使QML环境下的不同组件能够访问到同一个后端服务对象,则可能需要使用单类型。
19 2
|
1月前
|
前端开发 程序员 API
【Qt】控件介绍
【Qt】控件介绍
|
1月前
|
开发者
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
131 4
|
1月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
306 4
|
1月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
89 3
|
1月前
|
数据可视化
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
44 3
|
1月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
202 3
|
2月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
135 1
Qt(C++)开发一款图片防盗用水印制作小工具