我有一个QTableView使用QAbstractTableModel
将文件和文件夹填充为项目,我没有使用QFileSystemModel
,因为表格视图不单独显示文件夹名称,它还显示文件的属性文件夹。
所以我的问题是如何在DisplayRole
上添加验证器,或者如果有人试图在EditRole
中编辑文件夹名称,那么如果模型加载数据并显示它应该标记文件夹具有特殊字符的名称或具有超过预期字符的文件夹名称包含文件夹名称的单元格应为红色背景,
我尝试过添加一个引发异常的验证器,所以如果它很好BackgroundColorRole
返回QVariant
,如果异常则返回QtCore.Qt.red
答案 0 :(得分: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