0

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

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

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

有任何想法吗?

4

1 回答 1

1

我终于找到了。这完全是关于理解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);
}
于 2016-09-14T12:12:14.987 回答