2016-09-07 10 views
0

私はQListViewを使用しています。私はすでにモデルを設定しています。どのように逆選択のためのメソッドを実装できますか?QListViewの選択を逆にする

私はすでにui.listView->selectionModel()->select(selection, QItemSelectionModel::Toggle);を呼び出すために私のモデルのすべてのアイテムを含む新しいQItemSelectionを作成しようとしましたが、私の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); 
} 
関連する問題