web-dev-qa-db-ja.com

QtでQListViewの選択したアイテムからQStringを取得するにはどうすればよいですか?

QListViewで選択したアイテム名をQStringとして取得する必要があります。グーグルしようとしましたが、何も役に立ちませんでした。

18
MartinS

これはselectionModeによって異なりますが、ExtendedSelectionがあるとしましょう。これは、任意の数のアイテム(0を含む)を選択できることを意味します。

_ui->listView->setSelectionMode(QAbstractItemView::ExtendedSelection);
_

ui->listView->selectionModel()->selectedIndexes()を繰り返して選択したアイテムのインデックスを見つけてから、text()メソッドを呼び出してアイテムのテキストを取得する必要があります。

_QStringList list;
foreach(const QModelIndex &index, 
        ui->listView->selectionModel()->selectedIndexes())
    list.append(model->itemFromIndex(index)->text());
qDebug() << list.join(",");
_
19
KCiebiera

QAbstractItemView::ExtendedSelectionが無効になっている場合(一度に1つのアイテムしか選択できない)、ループなしでこれを行う方法は次のとおりです。

QModelIndex index = ui->listView->currentIndex();
QString itemText = index.data(Qt::DisplayRole).toString();
11
vicrucann