2012-06-28 17 views
13

मुझे QListView में QString के रूप में चयनित आइटम का नाम प्राप्त करने की आवश्यकता है। मैंने Google की कोशिश की है, लेकिन मुझे कुछ भी उपयोगी नहीं मिला है।क्यूटी में QListView चयनित आइटम से QString कैसे प्राप्त करें?

+3

'QListView' प्रलेखन (विशेष रूप से अपनी [सदस्य सूची] (http पर देखो: एक समय था), यह कैसे आप इसे किसी भी पाश के बिना कर सकते हैं // क्यूटी-proje ct.org/doc/qt-4.8/qlistview-members.html)) यह देखने के लिए कि वर्तमान इंडेक्स (एक 'QModelIndex' ऑब्जेक्ट) कैसे प्राप्त करें, और इंडेक्स से, आप इसकी डेटा सामग्री प्राप्त कर पाएंगे (ए 'QVariant' जिसे आप 'QString' में परिवर्तित कर सकते हैं)। – alexisdm

उत्तर

17

यह चयन पर निर्भर करता है मॉडोड कहता है कि आपके पास 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(","); 
+2

यहां 'मॉडल' क्या है? –

+0

क्या QListViews के लिए '' 'QAbstractItemView :: विस्तारित चयन '' अक्षम के साथ इसका उपयोग करने का एक साफ तरीका है? अर्थात। यदि केवल एक चयन संभव है और लूप और सूची इसलिए अनावश्यक हो जाती है? – Paddre

8

मामले में अगर QAbstractItemView::ExtendedSelection में एक आइटम का चयन करने के विकलांग (ही संभव है

QModelIndex index = ui->listView->currentIndex(); 
QString itemText = index.data(Qt::DisplayRole).toString(); 
संबंधित मुद्दे