Как получить QString из выбранного элемента QListView в Qt?

Мне нужно получить выбранное имя элемента в QListView как QString. Я попытался Google, но я не нашел ничего полезного.

2 ответов


это зависит от 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(",");

в случае если QAbstractItemView::ExtendedSelection отключено (можно выбрать только один элемент за раз), вот как вы можете сделать это без какого-либо цикла:

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