Я хочу сделать цикл с помощью итератора, но есть ошибка

У меня есть следующий код:

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

1

Решение

Ты пытался QList<QTreeWidgetItem *>::iterator ?

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;
3

По вопросам рекламы [email protected]