5

我有一个QTableView(基于模型的)并且我想禁用特定单元格的编辑功能,比如说第 0 行第 1 列。

我怎样才能做到这一点?请注意,我仍然希望启用此行中的其他单元格进行编辑。

4

1 回答 1

6

如果您使用的是自定义表格模型,则可以实现该Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const方法并返回一组标志,其中Qt::ItemIsEditable未为您不想编辑的单元格设置标志。假设MyTableModel继承自QAbstractTableModel

Qt::ItemFlags MyTableModel::flags ( const QModelIndex & index ) const {
    Qt::ItemFlags flags = Qt::NoItemFlags;

    if (index.row() == 0 && index.column() == 1) {
       return flags;
    }
    return flags | Qt::ItemIsEditable;
}
于 2012-09-21T06:56:37.940 回答