qtableview设置某列不可选中
时间: 2023-07-04 21:10:05 浏览: 130
您可以通过设置QItemSelectionModel的SelectionFlag来控制某列是否可被选中。具体实现步骤如下:
1.获取表格视图的选择模型:`QItemSelectionModel *selectionModel = tableView->selectionModel();`
2.创建一个SelectionFlag数组,用来表示哪些列可以被选中,哪些列不能被选中。例如,如果第2列不能被选中,则可以这样设置:`Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled;`,表示该列既可被选中,也可被编辑。
3.将SelectionFlag数组应用到选择模型中。如果您的表格视图只有一列,可以这样设置:`selectionModel->setSelectionFlags(flags);`,表示该列只能被编辑,不能被选中。如果您的表格视图有多列,可以使用`QItemSelection`类来指定需要设置的列,例如:`QItemSelection selection(model->index(0, 1), model->index(model->rowCount() - 1, 1));`,表示选择第2列的所有行,然后使用`selectionModel->select(selection, QItemSelectionModel::Select);`将其设置为可编辑。
完整代码如下:
```
QItemSelectionModel *selectionModel = tableView->selectionModel();
Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
QItemSelection selection(model->index(0, 1), model->index(model->rowCount() - 1, 1));
selectionModel->select(selection, QItemSelectionModel::Select);
selectionModel->setSelectionFlags(flags);
```