0

我制作了一个小部件,使用 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 中做到这一点?

4

0 回答 0