我正在尝试使用QValidator
后代(实际上是在 PyQt5 中,但这不重要)来验证一系列行编辑。
一小段摘录是:
class IPv4(QWidget):
def __init__(self):
super(IPv4, self).__init__()
uic.loadUi('ipv4.ui', self)
self.address.inputMask = ''
rx = QRegularExpression(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
self.address.setValidator(QRegularExpressionValidator(rx, self.address))
self.netmask.setValidator(QRegularExpressionValidator(rx, self.netmask))
self.gateway.setValidator(QRegularExpressionValidator(rx, self.gateway))
self.broadcast.setValidator(QRegularExpressionValidator(rx, self.broadcast))
self.dns1.setValidator(QRegularExpressionValidator(rx, self.dns1))
self.dns2.setValidator(QRegularExpressionValidator(rx, self.dns2))
self.on_dhcp_clicked(self.dhcp.isChecked())
这如宣传的那样工作,但用户没有得到任何反馈,因为尝试输入“错误”字符只会丢弃它们。
QLineEdit.textChanged
除了挂钩信号并“手动”进行验证(即:不设置验证器,否则出错text
时不会改变并且不会发出信号)之外,我没有找到任何提供反馈的方法。首选的反馈是更改行编辑的边框颜色。
这在某种程度上违背了验证器本身的目的。似乎我遗漏了一些东西,因为我看不到如何从QValidator
.
处理此问题的“标准方法”是什么?