0

我有一个 QTableView,它使用 填充文件和文件夹作为项目QAbstractTableModel,我没有使用,QFileSystemModel因为表格视图不仅显示文件夹名称,它还显示文件夹中文件的属性。

所以我的问题是如何添加验证器,DisplayRole或者如果有人试图在 中编辑文件夹名称EditRole,这样如果模型加载数据并显示它应该用特殊字符标记文件夹名称或那些文件夹名称超过预期的字符包含文件夹名称的单元格应为红色背景,

我已经尝试通过添加一个引发异常的验证器,所以如果它很好BackgroundColorRole返回QVariantelse 在异常的情况下它返回QtCore.Qt.red

4

1 回答 1

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
于 2015-12-15T20:47:54.353 回答