在QListView上反转选择
问题描述:
我已经在QListView上设置了一个模型。我如何实现反转选择的方法?在QListView上反转选择
我已经尝试制作一个新的QItemSelection
,其中包含我的型号的所有项目,以便拨打ui.listView->selectionModel()->select(selection, QItemSelectionModel::Toggle);
但我的QItemSelection
返回空白。
我也对我的模型的每个QModelIndex使用相同的方法,但我没有办法获得我的模型的所有QModelIndex
的列表。
任何想法?
答
我终于找到了。这完全是关于理解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);
}
有人请吗? – michalis