QLineEdit 控制输入格式——正则表达式与输入掩码
在实际应用中,我们常常需要在界面上控制用户的输入行为,以此来简化数据的处理。在 Qt 中,我们可以利用正则表达式和输入掩码来达到这种效果,例如 IP 地址的输入。
首先,构建正则表达式,并通过 QLineEdit 的 setValidator 函数进行输入校验设置,从而控制输入行为。部分代码如下:
QRegExp rx("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)");QRegExpValidator *pReg = new QRegExpValidator(rx, this);ipLineEdit->setValidator(pReg);
maskLineEdit->setValidator(pReg);
gatewayLineEdit->setValidator(pReg);
dnsLineEdit->setValidator(pReg);
可以看到,这里使用 QRegExpValidator 类来检查字符串是否符合正则表达式。这里对上面的正则表达式进行简单说明,更详细说明请查阅相关资料。
- \d:匹配一个数字,等同于[0-9]
- \.:匹配一个小数点
- ?:表示重复前面内容的0次或1次
- 2[0-4]\\d:涵盖了200~249之间的值
- 25[0-5]:涵盖了250~255之间的值
- [01]?\\d\\d?:涵盖了0~199之间的值
然后通过 setInputMask 函数设置输入掩码。部分代码如下:
ipLineEdit->setInputMask("000.000.000.000;0");
maskLineEdit->setInputMask("000.000.000.000;0");
gatewayLineEdit->setInputMask("000.000.000.000;0");
dnsLineEdit->setInputMask("000.000.000.000;0");
注意:这里的”000.000.000.000;0“,只有加上 ;0 ,才使得正则表达式和输入掩码同时生效。(可能是我还没发现更好的方法,如果你有更好的方法,请务必告诉我。)
效果如下:
另外,如果需要获取网络配置信息,可以调用 getifaddrs()
这个接口,它可以查找到系统所有的网络接口的信息,包括以太网卡接口和回环接口等。这里给出一个应用示例:
// returns IP address in network byte order
static unsigned int GetLocalIP(char *ifr_name)
{struct ifaddrs *pIfList; // pointer to interfaces liststruct ifaddrs *pIfInfo; // pointer to interface infounsigned int Address = 0;int i;if (getifaddrs(&pIfList) != -1) {pIfInfo = pIfList;while (pIfInfo != NULL){if(pIfInfo->ifa_addr != NULL){if ((pIfInfo->ifa_addr->sa_family == AF_INET) || (pIfInfo->ifa_addr->sa_family == AF_INET6)) {if (strcmp(pIfInfo->ifa_name, ifr_name) == 0){Address = ((struct sockaddr_in *) pIfInfo->ifa_addr)->sin_addr.s_addr;if (Address != 0){break;}}}}pIfInfo = pIfInfo->ifa_next;}freeifaddrs(pIfList);}//showIpstring(Address);return Address;
}
QLineEdit 控制输入格式——正则表达式与输入掩码相关推荐
- R7-如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy”也互为变位词。输入格式:第一行输入第一个字符
如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词.比如,"heart"与"earth"互为变位 词,"Mary"与& ...
- JAVA捕捉输入格式异常_Java学习(四).异常处理
异常处理 任何一个软件或程序都可能在运行的过程中出现故障,问题的关键是故障出现以后如何处理?谁来处理?怎样处理?处理后系统能否恢复正常的运行?本章在介绍Java处理这类问题基本方法的基础上,讨论包含异 ...
- 【QT】Qt正则表达式的使用:使用QRegExp来限制QLineEdit的输入格式
QLineEdit中使用QRegExp来限制输入格式,下面以IP输入框为例 QLineEdit *lineEditIP = new QLineEdit("192.168.147.200&qu ...
- Mastering Spark for Data Science:输入格式和架构
https://docs.microsoft.com/zh-cn/azure/machine-learning/team-data-science-process/ 数据团队的过程 本章的目的是演示 ...
- Vue中实现输入框Input输入格式限制
Vue中实现输入框Input输入格式限制 1.使用修饰符实现数字输入 在VUE中可以在v-modal后添加修饰符的形式来限制输入,比如: <input v-model.number=" ...
- C++STL开发温习与总结(六): 6.C++语言输入/输出流定义之输入/输出格式控制
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://mp.blog.csdn.net/postedit/79177645 C++STL开发温习 ...
- EXCEL破冰 - 锁定单元格样式和输入格式
需求背景 最近项目中一个功能,需要用户以Excel文件的方式提供录入数据.为了避免用户误操作给后续的文件解析工作带来额外的巨大工作量,我们需要对Excel模板文件进行定制.以下图为例 具体要求如下 锁 ...
- 正则表达式限定输入数字
正则表达式限定输入数字 整数或者小数:"^[0-9]+\.{0,1}[0-9]{0,2}$" 只能输入数字:"^[0-9]*$" 只能输入n位的数字:" ...
- C语言正确的输入格式和输入方式
1-1 C 语言表达式的正确书写方法 C 表达式是由 C 语言的常量.变量和运算符组成,它的书写格式与数学表达式有较大 不同 ,例如: 1 )数学表达式为: z=2xyz , C 语言表达式则为: z ...
最新文章
- 【activeMQ】一、入门
- 如何在windows本地用命令行访问SAP kyma实例
- SAP CRM产品主数据工作流相关调试
- IntelliJ IDEA for Mac如何通过指定的关键字查找/搜索类文件
- vector 中的元素去重
- 【软件开发底层知识修炼】十二 C/C++语言中内嵌汇编语言(asm)
- 2台服务器负载均衡后synchronized_一篇有趣的负载均衡算法实现
- 蓝桥杯第八届省赛JAVA真题----正则问题
- 计算机完成了加法操作执行的是,cpu是通过运算器中的什么来完成加法运算的
- 微课|中学生可以这样学Python(1.3节):Python代码编写规范
- vue import request from ‘@/xxx/xxx‘,@是什么意思怎样配置
- Redis集群环境搭建实践
- Flink 最佳搭档:开发部署平台 Zeppelin 的自白
- 【TWVRP】基于matlab遗传和模拟退火算法求解带时间窗的取送货问题【含Matlab源码 1139期】
- chromium代码结构
- 服务器微信互通是什么意思,妄想山海微信区和QQ区互通吗,服务器互通数据详解...
- Qt[每日一言|每日诗词]API调用
- 苏宁2021“轻装上阵”,张近东:聚焦零售优势业务,增利减亏
- qt base64加解密
- C++11 解决内存泄露问题的智能指针:shared_ptr、unique_ptr、weak_ptr