2017-11-27 7 views
0

Ich muss überprüfen, ob ein QTableWidget den Fokus verloren hat, damit ich den Eintragstext validieren und seinen Text ändern kann, wenn er für mein Programm nicht gültig ist.Validiere QTableWidget

+0

eine QItemDelegate verwenden und es dort zu validieren. Wenn Sie uns sagen, dass Sie validieren möchten, könnte ich Ihnen ein Beispiel geben. – eyllanesc

+0

Ich möchte nur bestätigen, dass der Eintragstext eine hexadezimale Zahl von zwei Ziffern ist – bril10

Antwort

0

Eine mögliche Lösung ist, einen Delegierten zu verwenden, und der Delegierte ist verantwortlich für die Validierung, in diesem Fall eine QLineEdit mit einem InputMask verwenden:

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_()) 
+0

Danke, es hat wunderbar funktioniert !!! Du hast mein Leben gerettet !!!! – bril10