我终于找到了。这完全是关于理解QModelIndex
而不是向模型询问其项目。首先是获取QModelIndex
当前级别/分支的根,QListView
然后获取QModelIndex
该根的第一个和最后一个子级的 s QModelIndex
。之后,您可以轻松地创建一个QItemSelection
包含此根的每个子项的新项。最后,您使用它QItemSelection
来切换QListView
.
void BrowserWidget::invertSelection() {
QModelIndex rootIndex = ui.listView->rootIndex();
QModelIndex first = rootIndex.child(0, 0);
int numOfItems = m_itemsModel->rowCount(rootIndex);
QModelIndex last = rootIndex.child(numOfItems - 1, 0);
QItemSelection selection(first, last);
ui.listView->selectionModel()->select(selection, QItemSelectionModel::Toggle);
}