2013-08-07 50 views
0

無法獲取要顯示的列表?試圖在QListView中顯示列表?

enter image description here

/*create QListView */ 
m_listViewA = new QListView(this); 
m_listViewA->setGeometry(QRect(QPoint(0,100), QSize(100, 150))); 

modelA = new QStandardItemModel(nrow, 1, this); 

//fill model value 
for(int r=0; r<nrow; r++) 
{ 
    QString sstr = "[ " + QString::number(r) + " ]"; 
    QStandardItem *item = new QStandardItem(QString("Idx ") + sstr); 
    modelA->setItem(r, 0, item); 
} 
//set model 
m_listViewA->setModel(modelA); 
m_listViewA->setSelectionMode(QAbstractItemView::ExtendedSelection); 

QStringList slist; 
foreach(const QStandardItem index, modelA) //ERROR 
{ 
    slist.append(index.data(Qt::DisplayRole).toString()); 
} 
+0

是包括在內。只有「slist」的代碼纔會出現問題。 – jdl

+0

Ooups對不起,沒有注意到第一個錯誤信息中的'*'。 – Mat

+0

您需要爲'foreach'取消引用模型,以便有機會運行它,但是我不認爲您可以像這樣使用模型。不知道爲什麼你在構建模型的同時還沒有填充slist。 – Mat

回答

0

這工作...但寧願用 「的foreach」 ......

QString strA; 
for(int r=0; r < modelA->rowCount(); r++) 
{ 
    strA += "\r\n" + modelA->item(r,0)->text(); 
} 
QMessageBox *msgBox = new QMessageBox(0); 
msgBox->setGeometry(QRect(QPoint(200,200),QSize(400,400))); 
msgBox->setInformativeText(strA); 
msgBox->exec(); 
+0

foreach將需要一個包含所有(頂級)項目的容器,但QStandardItemModel不存在此類訪問器。 –