0

У меня есть QTableView, который заполняет файлы и папки как элементы, используя QAbstractTableModel, я не использовал QFileSystemModel, потому что в представлении таблицы не отображаются только имена папок, а также отображается атрибут файлов в папке.Как добавить валидатор в DisplayRole и EditRole в QTableView в PyQt?

Так что мой вопрос заключается в том, как добавить валидатор на DisplayRole или если кто-то попытается изменить имя папки в EditRole, так что если модель загружает данные и отображает их, они должны отмечать имена папок специальным символом или той папкой имена с более, чем ожидалось символов ячейка, содержащая имя папки должны получить красный фон,

Я попытался, добавив валидатор, который вызывает исключение, так что если это штраф BackgroundColorRole возвращается QVariant еще в случае исключения его возвращает QtCore.Qt.red

ответ

0

Возможно, это поможет:

class YourModel(QtCore.QAbstractTableModel): 
    def setData(self, index, value, role): 
     # VALIDATE HERE 
     if index.column() == 0: 
      return False 
     if value == 'Some word' or value == '': 
      return False 
     # END VALIDATE HERE 
     if index.isValid() and role == QtCore.Qt.EditRole: 
      self.cached[index.row()][index.column()] = QtCore.QVariant(value) 
      self.emit(QtCore.SIGNAL("dataChanged(QModelIndex, QModelIndex)"), index, index) 
      return True 
     else: 
      return False