2014-10-28 24 views
1

我有以下代碼:我想用迭代的方式,使一個循環,但有一個錯誤

QList<QTreeWidgetItem *> selectedItems = ui->treeWidget->selectedItems(); 
for(QList<QTreeWidgetItem>::iterator i = selectedItems.begin(); i != selectedItems.end(); i++){ 
    qDebug() << i; 
} 

但有一個錯誤:
conversion from 'QList<QTreeWidgetItem*>::iterator' to non-scalar type 'QList<QTreeWidgetItem>::iterator' requested

+3

嘗試'的QList :: iterator i' – genisage 2014-10-28 23:35:01

回答

3

你試過QList<QTreeWidgetItem *>::iterator

+0

謝謝,我已經嘗試過使用'QList ',但是我忘了將'qDebug()<< i;'改成'qDebug()<< * i;'。我失去了我的焦點。 – 2014-10-28 23:46:46

3

你的代碼似乎包含不同類型的簡稱,即:

QList<QTreeWidgetItem *> selectedItems = ui->treeWidget->selectedItems(); 
        ^ 

for(QList<QTreeWidgetItem>::iterator i = selectedItems.begin(); i != selectedItems.end(); i++) 
         ^

你可以看到在前者的情況下使用指針,而不是後者。這也是編譯器試圖給你寫的東西。您將需要兩個調整來解決這個問題:

for (QList<QTreeWidgetItem*>::iterator i = selectedItems.begin(); i != selectedItems.end(); ++i) 
//     ^
    qDebug() << *i; // Need to change to dereference, respectively 

你也可以同樣使用foreach結構如下,因爲它是略短寫和理解:

foreach (QTreeWidgetItem* item, selectedItems) 
    qDebug() << item; 
+0

謝謝你的回答,'+ 1'爲你的良好答案。 – 2014-10-29 10:23:12

相關問題