QT学习笔记3 控件QLineEdit文本框使用方法和案例

QLineEdit 文本框控件

介绍

QLineEdit是 Qt 中的文本框,准确地说是单行文本框,通常用于接受用户的输入,比如输入用户名、密码等信息。
下图为ui界面中,QLineEdit控件所处位置,便于初学者寻找。
在这里插入图片描述

使用方法

占位字符串

占位字符,就是当文本框中输入内容为空时,显示的字符,用于提示用户文本框中应该输入什么内容
典型例子就是QQ登录界面,如下图所示:

在这里插入图片描述
所使用的相关函数如下所示:

// 获取和设置文本的对齐方式
Qt::Alignment alignment() const
void setAlignment(Qt::Alignment flag)

例程如下:

    ui->leEcho->setPlaceholderText("Normal");//设置占位符,用于设置在输入内容之前在文本框显示的内容

对齐方式

用于设置文本框的内容在水平和垂直两个方向上的对齐方式,使用方式和之前设置QLabel文本对齐方式一样,详细可参考:QT学习笔记2 控件QPushButton、QLabel使用方法和案例

回显模式

回显模式(EchoMode).实则就是设置文本框里的内容应该以何种形式去显示。
回显模式可以在ui右侧的属性窗口设置,也可以通过代码进行动态修改,所用到的函数如下:

// 获取和设置回显模式
QLineEdit::EchoMode echoMode() const
void setEchoMode(QLineEdit::EchoMode)

其中的QLine::EchoMode是一个宏,有如下取值:

  • QLineEdit::Normal ——正常模式,输入什么显示什么
  • QLineEdit::Password ——密码模式,输入字符已密码的形式显示出来,内容不可见
  • QLineEdit::NoEcho ——无回显模式,输入内容显示为空白,类似于Linux环境下输入密码
  • QLineEdit::PasswordEchoOnEdit ——失去焦点时以密码模式显示,当正在输入时为正常显示模式,当失去焦点,则以密码模式显示

例程如下:

ui->leEcho->setEchoMode(QLineEdit::Password);//设置回显模式为密码模式
ui->leEcho->setEchoMode(QLineEdit::NoEcho);//设置回显模式为无回显模式,不管输入什么都看不见,类似于在Linux下输入密码

读写控制

用于设置文本框是否可编辑,使能状态

// 获取和设置文本框的只读属性
bool isReadOnly() const
void setReadOnly(bool)
    
// 获取和设置文本框的是否使能
bool isEnabled() const
void setEnabled(bool)

例程如下:

 ui->leAccess->setReadOnly(false);//设置文本框可读可写
 ui->leAccess->setReadOnly(true);//设置文本框只读
 ui->leAccess->setEnabled(false);//禁能文本框
 ui->leAccess->setEnabled(true);//使能文本框

格式控制

用于指定文本框输入特定格式的内容。比如输入电话号码格式的文本,或者输入 IP 地址格式的文本等。

// 设置和获取格式控制
QString inputMask() const 
void setInputMask(const QString &inputMask)

接收一个 QString 类型的掩码,常用格式如下:

  • 无格式
// 设置和获取格式控制
QString inputMask() const 
void setInputMask(const QString &inputMask)

  • 电话号码
// 9 - 表示要求输入0-9的数字
// ;# - 表示格式字符串结束,并且未输入时显示#
ui->leMask->setInputMask("99999999999;#");

  • 密钥
// 9 - 表示要求输入0-9的数字
// ;# - 表示格式字符串结束,并且未输入时显示*
ui->leMask->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;*");

文本框信号槽

使用方法如QPushButton,只是所发生的信号不同,以下两种常见信号

  • textChanged 信号 ——当文本框内容发生改变,就会触发该信号
// 当文本框内容改变时,发射该信号
void textChanged(const QString &text)

  • editingFinished 信号 ————当文本框内容输入完毕(输入完成按下enter按键、或者失去焦点),就会触发该信号
// 当输入完毕时,发射该信号
void editingFinished()

举例如下:

用于进行简单计算,设计如下所示:
在这里插入图片描述
代码如下所示:

  • textChanged
// 5、信号槽演示
// 5.1 textChanged信号 - 实现自动计算加法结果
void Widget::on_lineEdit_add1_textChanged(const QString &arg1)
{
    int num;
    num = ui->lineEdit_add1->text().toInt() + ui->lineEdit_add2->text().toInt(); //两个文本框内容转化为int型数据,进行相加
    ui->lineEdit_result1->setText(QString::number(num));//计算结果显示在结果文本框
}

void Widget::on_lineEdit_add2_textChanged(const QString &arg1)
{
    int num;
    num = ui->lineEdit_add1->text().toInt() + ui->lineEdit_add2->text().toInt();//两个文本框内容转化为int型数据,进行相加
    ui->lineEdit_result1->setText(QString::number(num));//计算结果显示在结果文本框
}
  • editingFinished
// 5.2 editingFinished信号 - 实现自动计算减法结果
void Widget::on_lineEdit_sub1_editingFinished()
{
    int num;
    num = ui->lineEdit_sub1->text().toInt() + ui->lineEdit_sub2->text().toInt();//两个文本框内容转化为int型数据,进行相减
    ui->lineEdit_result2->setText(QString::number(num));//计算结果显示在结果文本框
}

void Widget::on_lineEdit_sub2_editingFinished()
{
    int num;
    num = ui->lineEdit_sub1->text().toInt() + ui->lineEdit_sub2->text().toInt();//两个文本框内容转化为int型数据,进行相减
    ui->lineEdit_result2->setText(QString::number(num));//计算结果显示在结果文本框
}

整体设计

在这里插入图片描述
代码如下:

#include "widget.h"
#include "ui_widget.h"


#include <QMessageBox>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    on_btnEchoNormal_clicked();    // 默认正常模式回显
    on_btnAlignLeft_clicked();    // 默认左对齐
    on_btnAccessReadWrite_clicked();    // 默认可读可写
    on_btnMaskNone_clicked();    // 默认无格式控制
    // 演示-textChanged信号
    ui->lineEdit_add1->setValidator(new QIntValidator(this));// 用于设置校验,只允许文本框中输入整数
    ui->lineEdit_add1->setPlaceholderText("加数");
    ui->lineEdit_add2->setValidator(new QIntValidator(this));
    ui->lineEdit_add2->setPlaceholderText("被加数");
    ui->lineEdit_result1->setPlaceholderText("和");
    // 演示-textFinished信号
    ui->lineEdit_sub1->setValidator(new QIntValidator(this));
    ui->lineEdit_sub1->setPlaceholderText("减数");
    ui->lineEdit_sub2->setValidator(new QIntValidator(this));
    ui->lineEdit_sub2->setPlaceholderText("被减数");
    ui->lineEdit_result2->setPlaceholderText("差");
}

Widget::~Widget()
{
    delete ui;
}
// 1、回显模式
// 1.1 正常
void Widget::on_btnEchoNormal_clicked()
{
    ui->lineEdit_Echo->clear();//清除文本框内容
    ui->lineEdit_Echo->setEchoMode(QLineEdit::Normal);//设置回显模式为正常模式,输入什么看到什么
    ui->lineEdit_Echo->setPlaceholderText("Normal");//设置占位符,用于设置在输入内容之前在文本框显示的内容
}
// 1.2 密码模式
void Widget::on_btnEchoPassword_clicked()
{
    ui->lineEdit_Echo->clear();
    ui->lineEdit_Echo->setEchoMode(QLineEdit::Password);//设置回显模式为密码模式,
    ui->lineEdit_Echo->setPlaceholderText("Passward");
}
// 1.3 不回显
void Widget::on_btnEchoNoEcho_clicked()
{
    ui->lineEdit_Echo->clear();
    ui->lineEdit_Echo->setEchoMode(QLineEdit::NoEcho);//设置回显模式为无回显模式,不管输入什么都看不见,类似于在Linux下输入密码
    ui->lineEdit_Echo->setPlaceholderText("NoEcho");
}
// 1.4 失去焦点时为密码模式
void Widget::on_btnEchoPasswordEchoOnEdit_clicked()
{
    ui->lineEdit_Echo->clear();
    ui->lineEdit_Echo->setEchoMode(QLineEdit::PasswordEchoOnEdit);//设置回显模式为焦点时为密码模式,当正在输入时为正常显示模式,当失去焦点,则以密码模式显示
    ui->lineEdit_Echo->setPlaceholderText("PasswordEchoOnEdit");
}
// 打印输处
void Widget::on_btnEchoPrint_clicked()
{
    QMessageBox::information(this,"回显模式",ui->lineEdit_Echo->text());
}

// 2、对齐方式
// 2.1 左对齐
void Widget::on_btnAlignLeft_clicked()
{
    ui->lineEdit_Alignt->setAlignment(Qt::AlignLeft);//设置输入文本左对齐
    ui->lineEdit_Alignt->setPlaceholderText("Left");
}
// 2.2 居中对齐
void Widget::on_btnAlignCenter_clicked()
{
    ui->lineEdit_Alignt->setAlignment(Qt::AlignCenter);
    ui->lineEdit_Alignt->setPlaceholderText("Center");
}
// 2.3 右对齐
void Widget::on_btnAlignRight_clicked()
{
    ui->lineEdit_Alignt->setAlignment(Qt::AlignRight);
    ui->lineEdit_Alignt->setPlaceholderText("Right");
}
// 3、读写控制
// 3.1 可读可写
void Widget::on_btnAccessReadWrite_clicked()
{
    ui->lineEdit_Access->setPlaceholderText("ReadWrite");
    ui->lineEdit_Access->setReadOnly(false);//设置文本框可读可写
}

// 3.2 只读
void Widget::on_btnAccessReadOnly_clicked()
{
    ui->lineEdit_Access->setPlaceholderText("ReadOnly");
    ui->lineEdit_Access->setReadOnly(true);//设置文本框只读
}
// 3.3 禁能
void Widget::on_btnAccessDisable_clicked()
{
     ui->lineEdit_Access->setPlaceholderText("Disable");
     ui->lineEdit_Access->setEnabled(false);//禁能文本框
}
// 3.4 使能
void Widget::on_btnAccessEnable_clicked()
{
    ui->lineEdit_Access->setPlaceholderText("Enable");
    ui->lineEdit_Access->setEnabled(true);//使能文本框
}
void Widget::on_btnAccessPrint_clicked()
{
      QMessageBox::information(this, "文本框演示", ui->lineEdit_Access->text());
}
// 4、格式控制
// 4.1 无格式
void Widget::on_btnMaskNone_clicked()
{
    ui->lineEdit_Mask->setInputMask("");
}
// 4.2 电话号码格式
void Widget::on_btnMaskPhone_clicked()
{
    // 9 - 表示要求输入0-9的数字
    // ;# - 表示格式字符串结束,并且未输入时显示#

    ui->lineEdit_Mask->setInputMask("99999999999;#");
}
// 4.3 密钥格式
void Widget::on_btnMaskLicense_clicked()
{
    // 9 - 表示要求输入0-9的数字
    // ;# - 表示格式字符串结束,并且未输入时显示*

    ui->lineEdit_Mask->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA;*");
}
// 5、信号槽演示
// 5.1 textChanged信号 - 实现自动计算加法结果
void Widget::on_lineEdit_add1_textChanged(const QString &arg1)
{
    int num;
    num = ui->lineEdit_add1->text().toInt() + ui->lineEdit_add2->text().toInt();
    ui->lineEdit_result1->setText(QString::number(num));
}

void Widget::on_lineEdit_add2_textChanged(const QString &arg1)
{
    int num;
    num = ui->lineEdit_add1->text().toInt() + ui->lineEdit_add2->text().toInt();
    ui->lineEdit_result1->setText(QString::number(num));
}
// 5.2 editingFinished信号 - 实现自动计算减法结果
void Widget::on_lineEdit_sub1_editingFinished()
{
    int num;
    num = ui->lineEdit_sub1->text().toInt() + ui->lineEdit_sub2->text().toInt();
    ui->lineEdit_result2->setText(QString::number(num));
}

void Widget::on_lineEdit_sub2_editingFinished()
{
    int num;
    num = ui->lineEdit_sub1->text().toInt() + ui->lineEdit_sub2->text().toInt();
    ui->lineEdit_result2->setText(QString::number(num));
}



具体可参考:【QT开发笔记-基础篇】| 第二章 常用控件 | 2.4 文本框 QLineEdit

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭小宴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值