2012-06-28 3 views
13

에서 선택된 항목 이름을 가져와야합니다. QListViewQString으로 가져와야합니다. 나는 구글에 가려고했지만 유용한 것은 아무것도 발견하지 못했다.QString에서 선택한 항목을 QListView에서 가져 오는 방법은 무엇입니까?

+3

'QListView'문서 (특히 해당 [회원 목록] (http : // qt-proje ct.org/doc/qt-4.8/qlistview-members.html))를 사용하여 현재 색인 (QModelIndex 객체)을 얻는 방법을 살펴보고 색인에서 데이터 내용을 가져올 수 있습니다 (a 'QString'로 변환 할 수있는'QVariant'). – alexisdm

답변

17

선택 모드에 따라 달라집니다. ExtendedSelection을 갖게되면 어떤 항목 (0 포함)도 선택할 수 있습니다. QAbstractItemView::ExtendedSelection가에 하나 개의 항목을 선택 만 가능합니다 (비활성화 된 경우 경우

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

'모델 '은 무엇입니까? –

+0

'''QAbstractItemView :: ExtendedSelection'''이 비활성화 된 상태에서 QListViews를 사용할 수있는 깨끗한 방법이 있습니까? 나는. 하나의 선택 만 가능하고 따라서 루프와 목록이 불필요하게된다면? – Paddre

8

:

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

당신이 선택한 항목의 인덱스를 찾기 위해 ui->listView->selectionModel()->selectedIndexes() 반복 한 다음 항목 텍스트를 얻을 수 text() 메소드를 호출한다 (루프를 사용하지 않고 수행 할 수있는 방법입니다) :

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