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

4

2 回答 2

3

你试过QList<QTreeWidgetItem *>::iterator吗?

于 2014-10-28T23:34:54.153 回答
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;
于 2014-10-29T03:22:37.377 回答