我想通过使用迭代器方式创建一个循环,但是有一个错误

时间:2014-10-28 23:31:35

标签: c++ qt iterator qlist qtreewidgetitem

我有以下代码:

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

2 个答案:

答案 0 :(得分:3)

您是否尝试过QList<QTreeWidgetItem *>::iterator

答案 1 :(得分: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;