2012-06-28 51 views
13

Necesito obtener el nombre del elemento seleccionado en QListView como QString. Intenté buscar en Google, pero no encontré nada útil.¿Cómo obtener QString de QListView elemento seleccionado en Qt?

+3

Mira la documentación de 'QListView' (especialmente su [lista de miembros] (http: // qt-proje ct.org/doc/qt-4.8/qlistview-members.html)) para ver cómo obtener el índice actual (un objeto 'QModelIndex'), y desde el índice, podrá obtener su contenido de datos (un 'QVariant' que puede convertir a' QString'). – alexisdm

Respuesta

17

Depende de selectionMode digamos que tiene ExtendedSelection lo que significa que puede seleccionar cualquier cantidad de elementos (incluido 0).

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

debe iterar a través ui->listView->selectionModel()->selectedIndexes() para encontrar índices de los elementos seleccionados, y luego llamar a text() método para obtener textos de posición:

QStringList list; 
foreach(const QModelIndex &index, 
     ui->listView->selectionModel()->selectedIndexes()) 
    list.append(model->itemFromIndex(index)->text()); 
qDebug() << list.join(","); 
+2

¿Qué es 'modelo 'aquí? –

+0

¿Existe alguna forma limpia de usar QListViews con '' 'QAbstractItemView :: ExtendedSelection''' deshabilitado? Es decir. si solo es posible una selección y el ciclo y la lista se vuelven innecesarios? – Paddre

8

En caso de que QAbstractItemView::ExtendedSelection está desactivado (sólo es posible para seleccionar un elemento a la vez), esto es cómo puede hacerlo sin ningún lazo:

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