Qt学习总结之Qlineedit

42 篇文章 1 订阅
36 篇文章 8 订阅

一、描述

QLineEdit是一个单行文本编辑器,允许用户输入和编辑单行纯文本。自带一些编辑例如撤销、重做、剪切、粘贴等功能。

QLineEdit继承自QWidget类,具备父类各种API。

下表列出了 QLineEdit 类对象经常调用的一些属性以及它们各自的含义:

属 性含 义
text保存输入框中的文本。
该属性的值可以通过 text() 方法获取,也可以通过 setText(const QString &) 方法修改。
maxLength设置输入框中最多可以放置的文本长度。当文本长度超出最大限度后,超出部分将被丢弃。
默认情况下,maxLength 的值为 32767。该属性的值可以通过 maxLength() 函数获得,也可以通过 setMaxLength(int) 方法修改。
placeholderText设置提示信息,例如当用户未选中输入框时,输入框中显示“请输入…”,而用户选中输入框时,“请输入…” 随之消失。
该属性的值可以通过 placeholderText() 方法获取,也可以通过 setPlaceholderText(const QString &) 方法修改。
clearButtonEnabled当输入框中有文本时,输入框的右侧可以显示一个“一键清除”按钮。该属性的默认值为 false,即输入框中不会自动显示清除按钮。
该属性的值可以通过 isClearButtonEnabled() 方法获取,也可以通过 setClearButtonEnabled(bool enable) 方法修改。
echoMode设定输入框中文本的显示样式,该属性的可选值有以下几个:
QLineEdit::Normal:正常显示所输入的字符,此为默认选项。
QLineEdit::NoEcho:不显示任何输入的字符,常用于密码类型的输入,且长度保密
QLineEdit::Password:显示与平台相关的密码掩饰字符,而不是实际输入的字符。当用户重新点击输入框时,可以紧接着之前的文本继续输入。
QLineEdit::PasswordEchoOnEdit:编辑时正常显示输入的字符,编辑完成后改为用密码掩饰字符显示。当用户重新点击输入框时,不能紧接着之前的文本继续输入。
该属性的是可以通过 echoMode() 方法获取,也可以通过 setEchoMode(EchoMode) 方法修改。
frame控制输入框的边框。默认情况下,输入框是带有边框的。
该属性的值可以通过 hasFrame() 方法获取,也可以通过 setFrame(bool) 方法修改。

除了上表提到的获取和修改属性值的方法外,QLineEdit 类还提供了一些功能实用的方法,例如:

成员方法功 能
move(int x, int y)指定输入框位于父窗口中的位置。
setValidator(const QValidator *v)限制输入框中的文本内容,比如输入框只包含整数。
setReadOnly(bool)设置输入框是否进入只读状态。在只读状态下,用户仍可以采用粘贴、拖拽的方式向输入框中放置文本,但无法进行编辑。
setAlignent(Qt::Alignment flag)设置输入框中输入文本的位置。

QLineEdit单行输入框的信号和槽
QLineEdit 类提供了几个信号函数,分别对应用户的几种输入状态。

信号函数功 能
textEdited(const QString &text)当用户编辑输入框中的文本时,此信号就会触发,text 参数即为用户新编辑的文本。
注意,当程序中试图通过 setText() 方法修改输入框中的文本时,不会触发此信号函数。
textChanged(const QString &text)只要输入框中的文本内容发生变化,就会触发此信息。
returnPressed()用户按下回车键时,会触发此信号。
editingFinished()用户按下回车键,或者鼠标点击输入框外的其它位置时,会触发此信号。

QLineEdit 类常用的槽函数有以下几个:

槽函数功 能
clear()清空文本框中的内容。
setText(const QString &)重新指定文本框中的内容。

二.功能作用

1.创建控件,设置、获取文本
每个单行输入框都是 QLineEdit 类的一个实例对象,QLineEdit 类提供有两个构造函数,分别是:

QLineEdit(QWidget *parent = Q_NULLPTR) QLineEdit(const QString
&contents, QWidget *parent = Q_NULLPTR)

contents 参数用于指定输入框中的文本内容;parent 参数用于指定新建输入框控件的父窗口,新建输入框将会内嵌到父窗口上,作为父窗口的一个子控件。当然,我们也可以不指定父窗口,那么新建的输入框就会作为独立的窗口。

在 QLineEdit 输入框中,用户可以直接输入一行文本,也可以粘贴一行文本,还可以修改输入框内的文本。某些实际场景中,QLineEdit 输入框还可以对用户输入的内容加以限定,比如:

  1. 限定文本的长度,例如用户最多可以输入 20 个字符;
  2. 输入文本的格式,例如用户输入出生日期时,必须按照“yy-mm-dd”的格式输入;
  3. 输入的文本内容,例如当前输入框仅允许用户输入数字,或者只允许用户输入英文字符。

这个很简单,没啥说的

m_lineedit1 = new QLineEdit("账号",this);     //创建控件
m_lineedit1->setGeometry(200,200,200,20);          //设置控件大小和位置

m_lineedit1->insert(":cgl");        //插入字符
QString str = m_lineedit1->displayText();
qDebug()<<"输入框1内容"<<str;        //获取用户能看到的字符串
str = m_lineedit1->text();
qDebug()<<"输入框1内容"<<str;        //获取真是的文本字符


注意的是最后两个,如果控件是密码输入框的时候,输入的字符用户看的是*或者黑点。那用最后一个获取的字符就是你看到的字符。而用le.text()获得的就是真是的文本。

2.输出模式

文本框的文本输出模式按下面的枚举值看有这四种

    m_lineedit1->setEchoMode(QLineEdit::PasswordEchoOnEdit);
    m_lineedit1->echoMode();                     //获取输出模式(int)

//    输出模式枚举值
//    QLineEdit::Normal                     正常显示,返回值0
//    QLineEdit.NoEcho                      不显示,返回值1
//    QLineEdit.Password                    密文显示,返回值2
//    QLineEdit.PasswordEchoOnEdit          编辑时正常显示,失去焦点后变密文

3.占位提示符

有些时候在打开一个界面时对话框是有提示文本的,当输入内容后文本消失被输入的值替代,这就是占位提示符的作用

m_lineedit1->setPlaceholderText("请输入账号...");    //设置占位文本
m_lineedit2->setPlaceholderText("请输入密码...");    //设置占位文本
m_lineedit1->placeholderText();                //获取占位文本

效果如下:
在这里插入图片描述
4清空按钮

平时不显示,有字符时会出现一个‘叉叉
单机叉叉后清除所有文本。就是清空按钮的作用

m_lineedit1->setClearButtonEnabled(true);  //设置清空按钮开启
m_lineedit1->isClearButtonEnabled();       //获取是否开启清空按钮

效果如下:
在这里插入图片描述
5.文本长度限制

可以设定文本框的限制长度,当输入的文本超过设定值时是无法再输入的。

m_lineedit1->setMaxLength(10);      //长度限制设定
m_lineedit1->maxLength();           //获取长度限定值

6.只读模式

可以将文本框设置为只读模式,设置后文本无法更改

m_lineedit1->setReadOnly(true);
m_lineedit1->isReadOnly();

源码:
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLineEdit>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

    QLineEdit *m_lineedit1;
    QLineEdit *m_lineedit2;
    void text_set_get_test();
    void lineedit_mode();
    void set_tipinfo();
    void clear_lineedit();
    void setmaxLength();
    void set_onlyread_mode();
};
#endif // MAINWINDOW_H

mainwindow.c

#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QLineEdit>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    this->resize(800,600);

    m_lineedit1 = new QLineEdit(this);     //创建控件
    m_lineedit1->setGeometry(200,200,200,20);          //设置控件大小和位置

    m_lineedit2= new QLineEdit(this);     //创建控件
    m_lineedit2->setGeometry(200,300,200,20);          //设置控件大小和位置

    text_set_get_test();

    lineedit_mode();

    set_tipinfo();

    clear_lineedit();

    setmaxLength();

    set_onlyread_mode();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::text_set_get_test()
{
    QString str = m_lineedit1->displayText();

    qDebug()<<"输入框1内容"<<str;        //获取用户能看到的字符串

    str = m_lineedit1->text();
    qDebug()<<"输入框1内容"<<str;        //获取真是的文本字符

//    m_lineedit1->insert(":cgl");        //插入字符
}

void MainWindow::lineedit_mode()
{
    m_lineedit1->setEchoMode(QLineEdit::Normal);
    m_lineedit1->echoMode();                     //获取输出模式(int)

//    输出模式枚举值
//    QLineEdit::Normal                     正常显示,返回值0
//    QLineEdit.NoEcho                      不显示,返回值1
//    QLineEdit.Password                    密文显示,返回值2
//    QLineEdit.PasswordEchoOnEdit          编辑时正常显示,失去焦点后变密文
}


void MainWindow::set_tipinfo()
{
    m_lineedit1->setPlaceholderText("请输入账号...");    //设置占位文本
    m_lineedit2->setPlaceholderText("请输入密码...");    //设置占位文本
    m_lineedit1->placeholderText();                //获取占位文本
}


void MainWindow::clear_lineedit()
{
    m_lineedit1->setClearButtonEnabled(true);  //设置清空按钮开启
    m_lineedit1->isClearButtonEnabled();       //获取是否开启清空按钮

}

//void MainWindow::auto_addinfo()
//{
//    QStringList list = ['aaron','back','click','disc'];    //自动补全的数据列表
//    completer = QCompleter(list,le)           #commpeter的生命周期归属于le的存在
//    QLineEdit.setCompleter(completer)
//    print(le.completer())
//}


void MainWindow::setmaxLength(){
    m_lineedit1->setMaxLength(10);      //长度限制设定
    m_lineedit1->maxLength();           //获取长度限定值
}


void MainWindow::set_onlyread_mode()
{
    m_lineedit1->setReadOnly(true);
    m_lineedit1->isReadOnly();
}
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌入式小龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值