在实际应用中,我们常常需要在界面上控制用户的输入行为,以此来简化数据的处理。在 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 控制输入格式——正则表达式与输入掩码相关推荐

  1. R7-如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy”也互为变位词。输入格式:第一行输入第一个字符

    如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词.比如,"heart"与"earth"互为变位 词,"Mary"与& ...

  2. JAVA捕捉输入格式异常_Java学习(四).异常处理

    异常处理 任何一个软件或程序都可能在运行的过程中出现故障,问题的关键是故障出现以后如何处理?谁来处理?怎样处理?处理后系统能否恢复正常的运行?本章在介绍Java处理这类问题基本方法的基础上,讨论包含异 ...

  3. 【QT】Qt正则表达式的使用:使用QRegExp来限制QLineEdit的输入格式

    QLineEdit中使用QRegExp来限制输入格式,下面以IP输入框为例 QLineEdit *lineEditIP = new QLineEdit("192.168.147.200&qu ...

  4. Mastering Spark for Data Science:输入格式和架构

    https://docs.microsoft.com/zh-cn/azure/machine-learning/team-data-science-process/  数据团队的过程 本章的目的是演示 ...

  5. Vue中实现输入框Input输入格式限制

    Vue中实现输入框Input输入格式限制 1.使用修饰符实现数字输入 在VUE中可以在v-modal后添加修饰符的形式来限制输入,比如: <input v-model.number=" ...

  6. C++STL开发温习与总结(六): 6.C++语言输入/输出流定义之输入/输出格式控制

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://mp.blog.csdn.net/postedit/79177645 C++STL开发温习 ...

  7. EXCEL破冰 - 锁定单元格样式和输入格式

    需求背景 最近项目中一个功能,需要用户以Excel文件的方式提供录入数据.为了避免用户误操作给后续的文件解析工作带来额外的巨大工作量,我们需要对Excel模板文件进行定制.以下图为例 具体要求如下 锁 ...

  8. 正则表达式限定输入数字

    正则表达式限定输入数字 整数或者小数:"^[0-9]+\.{0,1}[0-9]{0,2}$" 只能输入数字:"^[0-9]*$" 只能输入n位的数字:" ...

  9. C语言正确的输入格式和输入方式

    1-1 C 语言表达式的正确书写方法 C 表达式是由 C 语言的常量.变量和运算符组成,它的书写格式与数学表达式有较大 不同 ,例如: 1 )数学表达式为: z=2xyz , C 语言表达式则为: z ...

最新文章

  1. 【activeMQ】一、入门
  2. 如何在windows本地用命令行访问SAP kyma实例
  3. SAP CRM产品主数据工作流相关调试
  4. IntelliJ IDEA for Mac如何通过指定的关键字查找/搜索类文件
  5. vector 中的元素去重
  6. 【软件开发底层知识修炼】十二 C/C++语言中内嵌汇编语言(asm)
  7. 2台服务器负载均衡后synchronized_一篇有趣的负载均衡算法实现
  8. 蓝桥杯第八届省赛JAVA真题----正则问题
  9. 计算机完成了加法操作执行的是,cpu是通过运算器中的什么来完成加法运算的
  10. 微课|中学生可以这样学Python(1.3节):Python代码编写规范
  11. vue import request from ‘@/xxx/xxx‘,@是什么意思怎样配置
  12. Redis集群环境搭建实践
  13. Flink 最佳搭档:开发部署平台 Zeppelin 的自白
  14. 【TWVRP】基于matlab遗传和模拟退火算法求解带时间窗的取送货问题【含Matlab源码 1139期】
  15. chromium代码结构
  16. 服务器微信互通是什么意思,妄想山海微信区和QQ区互通吗,服务器互通数据详解...
  17. Qt[每日一言|每日诗词]API调用
  18. 苏宁2021“轻装上阵”,张近东:聚焦零售优势业务,增利减亏
  19. qt base64加解密
  20. C++11 解决内存泄露问题的智能指针:shared_ptr、unique_ptr、weak_ptr

热门文章

  1. 自学Python后,获得人生的第一桶金!
  2. flash滚动条制作
  3. windows无法访问指定设备_万能的Windows定时开关机设置方法详解,不需要BIOS支持...
  4. 工厂安灯系统的目的和意义
  5. winform 换肤
  6. 安装VS Code(适用于Win7)
  7. 雷军:用七字真言武装自己 专注、极致、口碑、快。
  8. 苹果手机想要传输数据到电脑怎么传输呢?
  9. 2020年有寓意的领证日期_2020年,这些日期去领证含有特殊的寓意
  10. oracle 自动备份批处理文件