QLineEdit 控制输入格式——正则表达式与输入掩码
发布时间:2020-12-14 00:44:05 所属栏目:百科 来源:网络整理
导读:在实际应用中,我们常常需要在界面上控制用户的输入行为,以此来简化数据的处理。在 Qt 中,我们可以利用正则表达式和输入掩码来达到这种效果,例如 IP 地址的输入。 首先,构建正则表达式,并通过 QLineEdit 的 setValidator 函数进行输入校验设置,从而控
在实际应用中,我们常常需要在界面上控制用户的输入行为,以此来简化数据的处理。在 Qt 中,我们可以利用正则表达式和输入掩码来达到这种效果,例如 IP 地址的输入。 QRegExp rx("((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)");
QRegExpValidator *pReg = new QRegExpValidator(rx,this);
ipLineEdit->setValidator(pReg);
maskLineEdit->setValidator(pReg);
gatewayLineEdit->setValidator(pReg);
dnsLineEdit->setValidator(pReg);
可以看到,这里使用 QRegExpValidator 类来检查字符串是否符合正则表达式。这里对上面的正则表达式进行简单说明,更详细说明请查阅相关资料。
然后通过 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 ,才使得正则表达式和输入掩码同时生效。(可能是我还没发现更好的方法,如果你有更好的方法,请务必告诉我。) 另外,如果需要获取网络配置信息,可以调用 // returns IP address in network byte order
static unsigned int GetLocalIP(char *ifr_name)
{
struct ifaddrs *pIfList; // pointer to interfaces list
struct ifaddrs *pIfInfo; // pointer to interface info
unsigned 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;
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |