QTreeView 如何实现item 反选
时间: 2023-04-09 09:00:38 浏览: 152
可以通过设置 QTreeView 的 selectionMode 为 QAbstractItemView::MultiSelection 和 selectionBehavior 为 QAbstractItemView::SelectItems,然后在鼠标点击事件中判断当前点击的 item 是否已经被选中,如果已经被选中,则将其取消选中。具体实现可以参考 Qt 官方文档中的示例代码。
相关问题
QTreeView 如何实现item 反选,请给出实例代码
可以通过设置 QTreeView 的选择模式为 QAbstractItemView::ExtendedSelection,然后在 itemClicked 信号中判断当前 item 是否已经被选中,如果已经被选中,则取消选中,否则选中。
以下是示例代码:
```cpp
// 设置选择模式为 ExtendedSelection
treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
// 在 itemClicked 信号中实现反选
connect(treeView, &QTreeView::clicked, [=](const QModelIndex &index) {
if (treeView->selectionModel()->isSelected(index)) {
treeView->selectionModel()->select(index, QItemSelectionModel::Deselect);
} else {
treeView->selectionModel()->select(index, QItemSelectionModel::Select);
}
});
```
QTreeView 实现反选
可以通过设置 QItemSelectionModel 的 SelectionFlag 来实现反选,具体代码如下:
```
QItemSelectionModel *selectionModel = treeView->selectionModel();
QModelIndexList selectedIndexes = selectionModel->selectedIndexes();
QItemSelection selection;
foreach (QModelIndex index, selectedIndexes) {
selection.select(index, QItemSelectionModel::Deselect);
}
selectionModel->select(selection, QItemSelectionModel::Select);
```
这段代码会将当前选中的所有项反选。
阅读全文