2012-06-28 22 views
13

Seçilen öğe adını QListView ürününde QString olarak almam gerekiyor. Google'ı denedim, ancak yararlı bir şey bulamadım.QString QtistView QtistView öğesinden nasıl seçilir?

+3

Bak: bir zaman) Bu da herhangi bir döngü olmadan bunu nasıl olduğunu // qt-proje ct.org/doc/qt-4.8/qlistview-members.html)) geçerli dizinin (bir "QModelIndex" nesnesinin) nasıl alınacağını görmek için ve indeksten veri içeriğini alabileceksiniz. "QVariant", bir "QString" e dönüştürebilirsiniz. – alexisdm

cevap

17

Seçime bağlıMod, ExtendedSelection olduğunu söyler, bu da herhangi bir sayıda öğeyi (0 dahil) seçebileceğiniz anlamına gelir. QAbstractItemView::ExtendedSelection az bir öğe seçmek için mümkün olan tek (devre dışıysa durumda

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

Burada 'model' nedir? –

+0

QListViews için '' 'QAbstractItemView :: ExtendedSelection''' devre dışıyken kullanmak için temiz bir yol var mı? Yani sadece bir seçim mümkün ise ve döngü ve liste bu yüzden gereksiz hale mi geliyor? – Paddre

8

:

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

seçilen öğelerin endeksleri bulmak için ui->listView->selectionModel()->selectedIndexes() yinelemenize ve ardından madde metinleri almak için text() yöntemini çağırmalıdır `QListView` belgelerinde (özellikle [üye listesi] (http

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