I think I found a workaround.

In the setModelData I make sure that the length is greater then 3 before calling setData.

Qt Code:
  1. def setModelData(self, editor, model, index):
  2. """
  3. Gets data from the editor widget and stores it in the specified model
  4. at the item index.
  5.  
  6. The default implementation gets the value to be stored in the data model
  7. from the editor widget's user property.
  8. """
  9.  
  10. # Call the setData method and set the data to the editors text. This
  11. # allows the user to write the edit text back to the model.
  12. if index.column() in [2, 3]:
  13. # Only set the data if the len of the text is greater then 3.
  14. # This means the data will not be set if it is less then 3.
  15. # this will force the validator to be met here.
  16. if len(editor.text()) >3:
  17. model.setData(index, QtCore.QVariant(editor.text()))
To copy to clipboard, switch view to plain text mode