QT QLineEdit介绍

简介

QLineEdit属于输入插件,用来实现单行录入。支持几种录入模式。

Normal表示正常录入,录入的信息会显示在QLineEdit上。

Password表示密码录入的方式,录入的信息不显示QLineEdit,只是通过黑色圆点显示。

NoEcho 表示不显示录入信息,类似于Linux输入密码时,显示的是一片空白。

PasswordEchoOnEdit 表示在输入的一刹那可以看到字符,但是立刻变为不可见的黑色圆点显示。

实战

我们创建一个QApplication项目,名字叫editline。项目主界面取名MainWindow类,继承于QMainWindow。Qt为我们自动生成ui文件。
然后在ui界面里添加四个QLineEdit和Label


https://cdn.llfc.club/2FqBuQlOvQZm3EIYuEkHHFQvSKV.png

我将ip的QLineEdit名字改为ipedit,设置ipedit的输入方式为Normal,这样可以在输入时看到输入的字符。
我们可以给ipedit设置mask规定输入的字符只能为0~9的数字

ui->ipedit->setEchoMode(QLineEdit::Normal);
QString ip_mask = "000.000.000.000;_";
ui->ipedit->setInputMask(ip_mask);

具体的mask规则可以参考Qt官方文档,这里列举一下常见的mask规则https://cdn.llfc.club/2FqBzfexfBgdO4NzdZa2pLtd4nO.png


利用上面的规则我们可以编写一些常用的mask

https://cdn.llfc.club/2FqC2I8jSBa5gkKZJyaNS0SFDTy.png

接下来我们设置mac地址的mask和录入模式,mac地址的edit被命名为macedit

ui->macedit->setEchoMode(QLineEdit::Normal);
QString mac_mask = "HH:HH:HH:HH;_";w
ui->macedit->setInputMask(mac_mask);

通过设置mask,规定mac的输入内容只能为A~F以及0~9的字符。

其实除了通过mask限制edit录入的内容外,还可以通过正则表达式限制,比如我们设置邮箱edit的录入内容

ui->emailedit->setEchoMode(QLineEdit::Normal);
//设置正则表达式过滤  secondtonone23@163.com
QRegExp regx("[a-zA-Z0-9_-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+");
QValidator *validator = new QRegExpValidator(regx, ui->emailedit );
ui->emailedit->setValidator(validator);

我们通过正则表达式限定了有限的规则为 “字符串和数子组合 + @ + 字符串和数子组合 + . + 字符串和数子组合”。
具体的正则表达式可以去Qt文档查看,也可以看看下边这个图

https://cdn.llfc.club/2FqC9e5dqJXCsFom1y8vHkCI1Jd.png

接下来我们可以设置密码输入框的输入模式为Password,保证录入时不显示密码

ui->passwdedit->setEchoMode(QLineEdit::Password);

总结

源码链接https://gitee.com/secondtonone1/qt-learning-notes

热门评论

热门文章

  1. 解密定时器的实现细节

    喜欢(566) 浏览(3208)
  2. C++ 类的继承封装和多态

    喜欢(588) 浏览(4480)
  3. Linux环境搭建和编码

    喜欢(594) 浏览(10524)
  4. windows环境搭建和vscode配置

    喜欢(587) 浏览(2498)
  5. slice介绍和使用

    喜欢(521) 浏览(2279)

最新评论

  1. 类和对象 陈宇航:支持!!!!
  2. C++ 虚函数表原理和类成员内存分布 WangQi888888:class Test{ int m; int b; }中b成员是int,为什么在内存中只占了1个字节。不应该是4个字节吗?是不是int应该改为char。这样的话就会符合图上说明的情况
  3. 解决博客回复区被脚本注入的问题 secondtonone1:走到现在我忽然明白一个道理,无论工作也好生活也罢,最重要的是开心,即使一份安稳的工作不能给我带来事业上的积累也要合理的舍弃,所以我还是想去做喜欢的方向。
  4. asio多线程模型IOServicePool Lion:线程池一定要继承单例模式吗
  5. 泛型算法的定制操作 secondtonone1:lambda和bind是C11新增的利器,善于利用这两个机制可以极大地提升编程安全性和效率。

个人公众号

个人微信