Qt QLineEdit

前言

QLineEdit单行文本编辑器,一般当输入控件使用,总结一下。

设置输入提示

void setPlaceholderText(const QString &);

设置最大长度

void setMaxLength(int);

setInputMask限制输入格式

限制输入格式
void setInputMask(const QString &inputMask);
在这里插入图片描述
例子
IP地址限定
ui->lineEdit->setInputMask(“000.000.000.000;_”);

QValidator即可以输入格式限定也可以检查输入结果是否正确

限定输入格式

QIntValidator *intVal = new QIntValidator(this);
intVal->setRange(1, 200);//这里只能限定3位数输入,即可以输入999
ui->lineEdit->setValidator(intVal);

验证是否正确

QString text = ui->lineEdit->text();
int pos = 0;
if(ui->lineEdit->validator()->validate(text,pos) == QValidator::Acceptable){
    qDebug() << "yes";
}else {
    qDebug() << "no";
}

利用正则表达式限定

限定ip格式

QRegExp exp("((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)");
QRegExpValidator *reg = new QRegExpValidator(exp);
ui->lineEdit->setValidator(reg);

回显模式

void setEchoMode(QLineEdit::EchoMode)
可选参数:
QLineEdit::Normal:
显示输入的字符(默认模式)

QLineEdit::NoEcho:
关闭回显,不显示任何内容(常用在输入密码时对密码长度进行保护)

QLineEdit::Password:
显示与平台相关的密码掩码字符,而不是实际输入的字符(如显示点)。

QLineEdit::PasswordEchoOnEdit
在输入时显示当前输入的字符,现在的很多密码输入框也是这种机制

设置只读

void setReadOnly(bool)

设置清除按钮

void setClearButtonEnabled(bool enable)

设置此属性后,编辑框最后面将会有一个"叉号",可以一键清除所有内容。

QLineEdit信号事件

在这里插入图片描述

光标移动事件

void cursorPositionChanged(int oldPos, int newPos)

按Return、Enter键或者编辑失去焦点时

void editingFinished()

自动补全

QStringList liststr;
liststr << "hello" <<"hi"<<"haha"<< "world";//忽略大小写
QCompleter *completer = new QCompleter(liststr);
completer->setCaseSensitivity(Qt::CaseInsensitive);
ui->lineEdit->setCompleter(completer);

在这里插入图片描述

动态添加补全内容

    QStringList liststr;
    liststr << "hello" <<"hi"<<"haha"<< "world"; 
    QStringListModel* m_listModel; = new QStringListModel(liststr,this);
    QCompleter* completer = new QCompleter(m_listModel);
    completer->setCaseSensitivity(Qt::CaseInsensitive);
    ui->lineEdit->setCompleter(completer);

    connect(ui->pushButton,&QPushButton::clicked,this,[=]()mutable{
       liststr.append("hhhhhhhh");
       m_listModel->setStringList(liststr);
    });

输入时
在这里插入图片描述
点击按钮后输入时
在这里插入图片描述

俩中实现方式其构造函数如下

QCompleter(QAbstractItemModel *model, QObject *parent = nullptr);
QCompleter(const QStringList& completions, QObject *parent = nullptr);

两者的区别,
一个是传地址,一个是传引用。
一个使用QStringList对QCompleter进行的初始化,一个是用QStringListModel*进行的初始化。
如果想动态改变补全列表的内容,只能用传地址的方式进行初始化。
而QStringListModel正是继承QAbstractItemModel 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值