Qt常用控件之QLineEdit
Qt常用控件之QLineEdit
- 1.QLineEdit概念
- 2.实现简单的信息输入进行提交
- 3.让输入的内容更加合法
- 4.判断密码是否相等
- 5.通过按钮来选择是否显示密码
🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【Qt的学习】
📝📝本篇内容:QLineEdit概念;实现简单的信息输入进行提交;让输入的内容更加合法;判断密码是否相等;通过按钮来选择是否显示密码
⬆⬆⬆⬆上一篇:Qt常用控件之QCalendarWidget
💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-
1.QLineEdit概念
QLineEdit是一个单行输入框,可以输入一段文本,但是不能换行。在前面的代码中用的也比较多,这次可以多了解一些它的函数
函数声明 | 函数说明 |
---|---|
QString text() const | 返回文本内容 |
void setText(const QString &) | 设置文本内容 |
void setInputMask(const QString &inputMask) | 设置输入内容的格式限制 |
void setMaxLength(int) | 设置输入的最大长度,汉字和英文一视同仁 |
void setFrame(bool) | 是否要设置边框 |
void setEchoMode(QLineEdit::EchoMode) | 设置显示模式。QLineEdit::Normal :这是默认值,⽂本框会显示输入的文本;QLineEdit::Password :在这种模式下,输⼊的字符会被隐藏,通常⽤星号(*)或等号(=)代替;QLineEdit::NoEcho :在这种模式下,⽂本框不会显示任何输⼊的字符 |
void setCursorPosition(int) | 设置光标位置 |
void setAlignment(Qt::Alignment flag) | 设置对齐方式,可以设置水平和垂直方向的对齐 |
void setDragEnabled(bool b) | 设置文本是否可以拖拽,默认是不可以的 |
void setReadOnly(bool) | 设置是否是只读的 |
QString placeholderText() const | 当输⼊框内容为空的时候, 显示什么样的提示信息 |
void setClearButtonEnabled(bool enable) | 设置清除按钮 |
接下来就是一些它的信号
信号声明 | 信号说明 |
---|---|
void cursorPositionChanged(int oldPos, int newPos) | 当⿏标移动时发出此信号,old为先前的位置,new为新位置。 |
void editingFinished() | 当按返回或者回⻋键时,或者⾏编辑失去焦点时,发出此信号。 |
void selectionChanged() | 当双击选词、键盘快捷键(如Ctrl+A全选),发出此信号。 |
void textChanged(const QString &text) | 当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改能够触发这个信号 |
void textEdited(const QString &text)) | 当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改不能触发这个信号 |
2.实现简单的信息输入进行提交
我们需要设置四个信息,分别是姓名,密码,性别和电话。其中只有性别需要使用单选按钮,其余的内容填写都是使用单行输入框,并且需要设置一个按钮作为提交按钮。
并且我们将它们的objectName分别命名为lineEdit_name,lineEdit_passward,radioButton_male,radioButton_female以及lineEdit_telephone
在每一个单行输入框中都进行设置了“提示内容”,这些提示内容只会在没有内容输入的时候淡淡的显示出来,一旦有内容输入就没有了
。并且对于输入的密码,我们进行了特殊的设置,输入的密码会以“小圆点”进行显示,这样能够保护用户的隐私。在中国,我们的电话号码是11位组成的,因此我们通过setInputMask函数进行设置了简单的输入格式限制,一旦超过11位就无法进行输入了,但是这种比较简单,后面代码展示加强限制。
通过进行输入后,我们可以发现我们设置地清除按钮也出现了,通过它,我可以将输入的内容全部清空。在这里我们的提交按钮就是简单的日志打印,但是在真正的使用中,一般性是通过网络传输到服务器。
3.让输入的内容更加合法
前面的代码中只对电话号码进行了简单的限制,还是会出现手机号码不正确的输入,因此我们需要加强设置,让我们的手机号码的第一位必须是1并且11位都是数字
因此我们需要使用到正则表达式来解决这个问题,正则表达式并不是一个编程语言专属的,它是编程界的通过方法,正则表达式就是一串带有特殊字符的字符串,特殊字符表示了另一个我们需要的字符串的特征。通过这些特征来匹配我们的字符串
可以通过这个连接来查看正则表达式,需要用到的时候进行查看即可,不用背,太过复杂:正则表达式
QLineEdit的这个槽函数的作用是当输入框的内容只要发生改变就会触发信号,因此每一次的输入都可以进行判断。
并且我们来看一下validate这个函数它的声明,它其实需要的是一个QString类型的,但是我们收到的参数是被const修饰的arg1,因此我们只能自己创建一个变量
这个函数有两个参数,第一个参数是要验证的字符串,第二个参数是一个引用类型,它能够告诉我们如果这个字符串不符合规则,则是从哪个位置开始不符合的
我们现在使用的这个QRegExpValidator是Qt内置的,我们也可以自定义一个Validator来重写validate函数
并且因为我们的正则表达式,我们输入的第一个必须是1否则不会输入显示,并且一旦满了11位后就不能再输入,如下,其实一直在输入,只不过被限制了
4.判断密码是否相等
接下来我们使用QLineEdit来写一个判断密码是否相等的代码,通过文本来显示当前的情况
代码非常简单,只通过我们textEdited信号来触发两个输入进行判断,虽然我们默认设置的密码状态是“当前密码为空”,但是还是需要在进行设置判断,当两个输入框都为空时,文本显示“当前密码为空”,这是因为要考虑到密码输到一半删除了。并且我们可以发现两个输入框的槽函数所写的代码是一样的,因此我们可以进行封装一个函数来减少代码冗余。
这里面还有一个细节就是我们的arg1,使用了(void)强转,这主要是因为不使用arg1会造成警告,虽然问题不大,但是有些公司是不允许有警告的问题,会把警告当成错误处理,因此为了避免这个问题,我们可以通过void强转来解决。
5.通过按钮来选择是否显示密码
这个代码就不详细解释了,注释中也已经说明了
🌸🌸Qt常用控件之QLineEdit大概就讲到这里啦,博主后续会继续更新更多Qt的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!如有小伙伴需要Qt的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪