我制作了一个小部件,使用 Qt Designer 中的 6 个 QSpinBox 小部件输入 MAC 地址,使用这个简单的代码将数字显示为 HEX 并接受 HEX 作为输入:
class HexSpinBox(QtGui.QSpinBox):
def textFromValue(self, value):
return "{0:02x}".format(value)
def validate(self, text, pos):
if text == "":
return QtGui.QValidator.Intermediate
try:
value = int("0x" + text, 16)
except ValueError:
return QtGui.QValidator.Invalid
if value < 0:
return QtGui.QValidator.Invalid
if value > 255:
return QtGui.QValidator.Invalid
return QtGui.QValidator.Acceptable
def valueFromText(self, text):
return int("0x" + text, 16)
class MACWidget(QtGui.QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
loadUi("client/qt/Networking/MACWidget.ui", self, {"HexSpinBox": HexSpinBox})
# This gives me self.spinBox_1 through self.spinBox_6 of tpye HexSpinBox
现在我希望能够从六个 SpinBox 中选择第一个,然后输入完整的 12 位 MAC。每个输入 2 位数字后,我希望焦点跳转到下一个 SpinBox 并选择内容,以便可以通过键入更多来覆盖它。
我如何在 QT4.8 中做到这一点?