在QListView上反转选择



我有一个QListView,我已经为它设置了一个模型。如何实现反转选择的方法?

我已经尝试创建一个新的QItemSelection,其中包含我的模型的所有项目,以便调用ui.listView->selectionModel()->select(selection, QItemSelectionModel::Toggle);,但我的QItemSelection返回空。

我也想过对我的模型的每个QModelIndex使用相同的方法,但是我没有办法得到我的模型的所有QModelIndex的列表。

任何想法?

我终于找到了。这一切都是关于理解QModelIndex,而不是要求模型提供它的项目。首先是获得QListView当前级别/分支的根QModelIndex,然后获得该根QModelIndex的第一和最后一个子QModelIndex s。之后,您可以轻松地创建一个包含该根的每个子节点的新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);
}

最新更新