Qtableview设置某一列不可选中
时间: 2023-07-04 14:09:49 浏览: 495
你可以通过实现 `QItemSelectionModel` 的 `QItemSelectionFlags flags(const QModelIndex &index) const` 函数来禁用某一列的选中状态。步骤如下:
1. 获取 `QTableView` 的 `QItemSelectionModel` 对象:
```cpp
QItemSelectionModel *selectionModel = tableView->selectionModel();
```
2. 自定义 `QItemSelectionModel` 子类并重新实现 `flags()` 函数:
```cpp
class CustomSelectionModel : public QItemSelectionModel
{
public:
CustomSelectionModel(QAbstractItemModel *model)
: QItemSelectionModel(model)
{
}
QItemSelectionFlags flags(const QModelIndex &index) const override
{
QItemSelectionFlags flags = QItemSelectionModel::flags(index);
if (index.column() == 1) {
flags &= ~Qt::ItemIsSelectable;
}
return flags;
}
};
```
3. 将自定义的 `QItemSelectionModel` 对象设置为 `QTableView` 的选中模型:
```cpp
CustomSelectionModel *customSelectionModel = new CustomSelectionModel(tableView->model());
tableView->setSelectionModel(customSelectionModel);
```
这样就可以禁用第二列的选中状态了。
阅读全文