验证 QTableWidget 中的文本
Validate text in QTableWidget
我需要验证 QTableWidget 是否失去了焦点,因此我可以验证输入文本并更改其文本(如果它对我的程序无效)。
一个可能的解决方案是使用委托,委托负责验证,在这种情况下使用带有 inputMask 的 QLineEdit:
class HexDelegate(QItemDelegate):
def createEditor(self, parent, option, index):
w = QLineEdit(parent)
w.setInputMask("HH")
return w
class App(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
self.setLayout(QVBoxLayout())
# Create table
self.tableWidget = QTableWidget(self)
self.layout().addWidget(self.tableWidget)
self.tableWidget.setRowCount(4)
self.tableWidget.setColumnCount(2)
self.tableWidget.setItemDelegate(HexDelegate())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())
我需要验证 QTableWidget 是否失去了焦点,因此我可以验证输入文本并更改其文本(如果它对我的程序无效)。
一个可能的解决方案是使用委托,委托负责验证,在这种情况下使用带有 inputMask 的 QLineEdit:
class HexDelegate(QItemDelegate):
def createEditor(self, parent, option, index):
w = QLineEdit(parent)
w.setInputMask("HH")
return w
class App(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
self.setLayout(QVBoxLayout())
# Create table
self.tableWidget = QTableWidget(self)
self.layout().addWidget(self.tableWidget)
self.tableWidget.setRowCount(4)
self.tableWidget.setColumnCount(2)
self.tableWidget.setItemDelegate(HexDelegate())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())