将setInputMask和setValidator IPv4地址组合到QlineEdit中的问题
我有一个QLineEdit来设置我的IPv4地址。 第一次,我将我的QLineEdit与setInputMask设置为具有“ ...”。 第二次,我使用Ip验证程序来检查它是否是IP地址
问题是当我分开使用时,它可以工作,但是在一起时,我无法编辑QLineEdit ...
self.lineEdit_IP = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_IP.setGeometry(120,0,160,30)
self.lineEdit_IP.setStyleSheet("background-color: rgb(255, 255, 255);")
self.lineEdit_IP.setAlignment(QtCore.Qt.AlignHCenter)
self.lineEdit_IP.setInputMask("000.000.000.000")
#Set IP Validator
regexp = QtCore.QRegExp('^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){0,3}$')
validator = QtGui.QRegExpValidator(regexp)
self.lineEdit_IP.setValidator(validator)
答案 0 :(得分:0)
为QLine设置遮罩会将其内容从空更改为指定符号。在您的情况下,“空” QLine实际上看起来像“ ... ”。这就是正则表达式失败的原因。 您可以使用自己的替代验证器:
number | boolean
并像这样使用它
mapValues3
带有掩码,例如“ 000.000.000.000; _ ”或“ 000.000.000.000; ” <-末尾带有空格