2016-09-07 45 views
0

我已經在QListView上設置了一個模型。我如何實現反轉選擇的方法?在QListView上反轉選擇

我已經嘗試製作一個新的QItemSelection,其中包含我的型號的所有項目,以便撥打ui.listView->selectionModel()->select(selection, QItemSelectionModel::Toggle);但我的QItemSelection返回空白。

我也對我的模型的每個QModelIndex使用相同的方法,但我沒有辦法獲得我的模型的所有QModelIndex的列表。

任何想法?

+0

有人請嗎? – michalis

回答

1

我終於找到了。這完全是關於理解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); 
}