LightGunDiyer 光枪爱好者
QT应用编程-QLineEditor设置IP与端口输入限定 - 可打印的版本

+- LightGunDiyer 光枪爱好者 (http://www.wukongxuetang.com/bbs)
+-- 版块: 光枪原理与光枪DIY (http://www.wukongxuetang.com/bbs/forumdisplay.php?fid=1)
+--- 版块: 光枪-软件编程 (http://www.wukongxuetang.com/bbs/forumdisplay.php?fid=4)
+--- 主题: QT应用编程-QLineEditor设置IP与端口输入限定 (/showthread.php?tid=34)



QT应用编程-QLineEditor设置IP与端口输入限定 - wukong - 05-08-2024

使用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,在使用正则表达式的同时,限定输入框最长输入长度