【Qt】【QListView】QListViewの選択項目の取得
QListViewの選択項目の取得には以下の2通りの方法があります。
- フォーカス中のアイテムの取得
- 選択状態のアイテムの取得
まずはそれぞれの方法を示します。
- フォーカス中のアイテムの取得
QStandardItem * item = NULL; // フォーカス中のアイテムのインデックスを取得 const QModelIndex index = listView->selectionModel()->currentIndex(); item = model->itemFromIndex(index); Q_ASSERT(item);
- 選択状態のアイテムの取得
QStandardItem * item = NULL; QList<QStandardItem *> listItem; // 選択項目のインデックスリスト(選択順) QModelIndexList listIndex = listView->selectionModel()->selectedIndexes(); foreach ( QModelIndex index, listIndex ) { item = model->itemFromIndex( index ); Q_ASSERT(item); listItem << item; }
見ていただければわかるように、この2つの方法には以下の違いがあります。
- フォーカス中の項目の取得は1つのアイテムインデックスが得られる
- 選択中の項目の取得は複数のアイテムインデックスが得られる
設定をしない限りは同時に選択できる項目が1つのみのため、
得られる結果に違いはありません。
ただし、複数選択を可能とした場合には、
後者の方法が見かけの選択項目と同じ項目を返します。
複数選択は、以下の設定をすることで可能となります。
// 選択モードを複数選択に設定
listView->setSelectionMode( QAbstractItemView::ExtendedSelection );