在QListView上反转选择

问题描述:

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

我已经尝试制作一个新的QItemSelection,其中包含我的型号的所有项目,以便拨打ui.listView->selectionModel()->select(selection, QItemSelectionModel::Toggle);但我的QItemSelection返回空白。

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

任何想法?

+0

有人请吗? – michalis

我终于找到了。这完全是关于理解QModelIndex而不是要求模型的项目。首先要获得作为QListView的当前级别/分支的根的QModelIndex,然后获取此根QModelIndex的第一个和最后一个孩子的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); 
}