文章目录
- qt常用控件-05
- LineEdit
- TextEdit
- combo box
- 结语
很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!!
今天我们进一步c++11中常见的新增表达
作者:٩( ‘ω’ )و260
我的专栏:qt,Linux,C++进阶,C++初阶,数据结构初阶,题海探骊,c语言
欢迎点赞,关注!!
qt常用控件-05
LineEdit
常见的属性:
核心信号
接下来我们来看示例1:
我们想要实现一个用户登录界面,来看代码实现:首先我们直接图形化创建对应的label和lineEdit控件。
随后我们给其中添加上一些提示符:
我们再来运行代码:
这里的setInputMask目的是因为在中国绝大多数电话都是11位,所以我们当我们已经输入11位电话之后,理应不能输入电话了~
我们来看示例2:
我们前面是使用的setInputMask来设置限制格式的,只能适用于简单的校验,在大多数情况下,我们利用正则表达式设置限制格式更加灵活。正则表达式比较复杂,我们这里每次使用的时候查阅文档并使用在线工具。其实使用的时候都不用自己写,直接网上搜,再通过在线工具验证即可
正则表达式文档
在线测试工具
接下来我们使用正则表达式来校验电话号码:我们实现一个只有满足正则表达式的电话号码下,此时我们才能够点击提交:
先来图像化设置控件:
首先,我们需要设置一个正则表达式,和校验器,校验器是利用正则表达式为基准,去校验该电话号码的,所以需要使用正则表达式出初始化这个校验器,来看代码
为什么这里是new呢的?因为new的,但是我将该new的校验器初始化隔了setValidator,当该对象销毁的时候,析构函数会将这个校验器一并删除,有点智能指针那种感觉了。
我们已经设置校验器,那么,我们是不是还需要触发对应的文本检测信号,我们才能够使用校验器基于正则表达式去校验文本呢?
来看接下来信号与 槽函数的部分(该信号只要文本发生改变,就会触发该信号):
为什么我们不用arg1,而选择再创建一个s呢?因为validate的参数是QString,int,但是我们arg1是const,直接传的话权限放大,报错,第二个整形是为了当不匹配的时候,告诉我们字符串此时长度是多少(即是从哪里开始不匹配的),这个参数不是很重要。而且返回值是一个state的枚举类型。其中包含:
我们直接来看结果:
校验器一般有四种,但是我们常用的就是示例上的这种:
我们来看示例3,我们想来设置一个面板,内容是用户重置密码,即我们需要输入密码+确认密码并且验证这两个密码是否相同:
这里我们肯定需要用到上面第二个示例中使用到的信号,因为设置密码的时候我们需要和重置密码比较看是否相同,重置密码的时候我们需要和设置密码比较是否相同。即两个lineEdit都需要设置文本检查信号,来看图形化界面:
来看代码:
来看效果:
示例4,我们在输入密码的时候,旁边会有一个按钮,点击之后密码就会回显,反之密码就不会回显,先来看图形化界面:
再来看代码:
我们来看效果:
TextEdit
常见属性:
常见信号:
我们来看示例代码1,获取到多行输入框中的内容
先来看图形化界面部分:
来看代码部分:
注意:Text Edit获取自身文本接口不是text()!!
来看结果:
示例2,我们来测试一下接下来的信号:
这里我们通过日志打印来观察现象:
combo box
常见属性:
核心操作:
核心信号:
我们来看示例1,我们来模拟一个外面点餐界面:
先来看界面:
再来看代码:
来看效果:
上述是通过代码addItem添加,当然也可以直接在可视化界面添加项目,直接在ui文件双击combo box即可
示例2:我们前面是自己通过代码添加,我们还可以通过文件/网络添加:
因为有时候combo box下拉框的项并不是固定的,会随着时间改变而改变,比如:学生选课
一般我们打开文件使用fopen(c语言阶段),ifstream(c++阶段),而我们更加倾向后者~~
先在d判断创建一个文本文件,并完成其中的内容,我们必须要换行,因为我们读取该文本文件的时候需要使用到getline操作:
来看代码:
来看效果:
这样我们就添加成功了!!
结语
今天的内容就到这里了,感谢大家的认真阅读,不足之处欢迎大家留言指出,感谢大家支持!!