How to get QString from QListView selected item in Qt?
Asked Answered
G

2

21

I need to get the selected item name in QListView as a QString. I have tried to google, but I haven't found anything useful.

Gallion answered 28/6, 2012 at 13:42 Comment(1)
Look at the QListView documentation (especially its member list ) to see how to get the current index (a QModelIndex object), and from the index, you'll be able to get its data content (a QVariant that you can convert to a QString).Faircloth
E
26

It depends on selectionMode lets say you have ExtendedSelection which means you can select any number of items (including 0).

ui->listView->setSelectionMode(QAbstractItemView::ExtendedSelection);

you should iterate through ui->listView->selectionModel()->selectedIndexes() to find indexes of selected items, and then call text() method to get item texts:

QStringList list;
foreach(const QModelIndex &index, 
        ui->listView->selectionModel()->selectedIndexes())
    list.append(model->itemFromIndex(index)->text());
qDebug() << list.join(",");
Elora answered 28/6, 2012 at 17:12 Comment(2)
What is `model' here?Dredger
Is there a clean way to use that for QListViews with QAbstractItemView::ExtendedSelection disabled? I.e. if only one selection is possible and the loop and list therefore become needless?Lipfert
M
19

In case if QAbstractItemView::ExtendedSelection is disabled (only possible to select one item at a time), this is how you can do it without any loop:

QModelIndex index = ui->listView->currentIndex();
QString itemText = index.data(Qt::DisplayRole).toString();
Magenta answered 4/8, 2016 at 16:3 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.