05-08-2024, 12:46 AM
使用qt官方提供的整数输入方案,存在超限bug,也就是说你限定的数值,他会默认作为位数长度,比如限定0-255,实际可以输入的范围变成0-999
QRegularExpression regExp("^([0-9]|[1-9][0-9]|[1][0-9]{2}|2[0-4][0-9]|25[0-5])$");
QValidator *IntValidator = new QRegularExpressionValidator(regExp, this);
ui->deviceIP1->setValidator(IntValidator);
ui->deviceIP2->setValidator(IntValidator);
ui->deviceIP3->setValidator(IntValidator);
ui->deviceIP4->setValidator(IntValidator);
ui->mask1->setValidator(IntValidator);
ui->mask2->setValidator(IntValidator);
ui->mask3->setValidator(IntValidator);
ui->mask4->setValidator(IntValidator);
ui->gateway1->setValidator(IntValidator);
ui->gateway2->setValidator(IntValidator);
ui->gateway3->setValidator(IntValidator);
ui->gateway4->setValidator(IntValidator);
ui->serverIP1->setValidator(IntValidator);
ui->serverIP2->setValidator(IntValidator);
ui->serverIP3->setValidator(IntValidator);
ui->serverIP4->setValidator(IntValidator);
QRegularExpression portRegex("^(?:6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|5[0-9]\\d{4}|[1-9]\\d{0,3})$");
QRegularExpressionValidator* portValidator = new QRegularExpressionValidator(portRegex);
ui->localport->setMaxLength(5);
ui->localport->setValidator(portValidator);
ui->remoteport->setMaxLength(5);
ui->remoteport->setValidator(portValidator);
一,ip直接利用正则表达式进行设置
二,port端口范围1-65535,在使用正则表达式的同时,限定输入框最长输入长度
QRegularExpression regExp("^([0-9]|[1-9][0-9]|[1][0-9]{2}|2[0-4][0-9]|25[0-5])$");
QValidator *IntValidator = new QRegularExpressionValidator(regExp, this);
ui->deviceIP1->setValidator(IntValidator);
ui->deviceIP2->setValidator(IntValidator);
ui->deviceIP3->setValidator(IntValidator);
ui->deviceIP4->setValidator(IntValidator);
ui->mask1->setValidator(IntValidator);
ui->mask2->setValidator(IntValidator);
ui->mask3->setValidator(IntValidator);
ui->mask4->setValidator(IntValidator);
ui->gateway1->setValidator(IntValidator);
ui->gateway2->setValidator(IntValidator);
ui->gateway3->setValidator(IntValidator);
ui->gateway4->setValidator(IntValidator);
ui->serverIP1->setValidator(IntValidator);
ui->serverIP2->setValidator(IntValidator);
ui->serverIP3->setValidator(IntValidator);
ui->serverIP4->setValidator(IntValidator);
QRegularExpression portRegex("^(?:6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|5[0-9]\\d{4}|[1-9]\\d{0,3})$");
QRegularExpressionValidator* portValidator = new QRegularExpressionValidator(portRegex);
ui->localport->setMaxLength(5);
ui->localport->setValidator(portValidator);
ui->remoteport->setMaxLength(5);
ui->remoteport->setValidator(portValidator);
一,ip直接利用正则表达式进行设置
二,port端口范围1-65535,在使用正则表达式的同时,限定输入框最长输入长度
悟空学堂 专注交互技术分享