如何在PyQt的QTableView中添加DisplayRole和EditRole验证器?

2024-09-25 14:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我已经尝试添加一个引发异常的验证器,所以如果没有问题,BackgroundColorRole返回QVariant否则在异常情况下它返回QtCore.Qt.red


Tags: 文件数据标记模型文件夹名称视图编辑
1条回答
网友
1楼 · 发布于 2024-09-25 14:29:13

也许这会有帮助:

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

相关问题 更多 >