2014-10-28 6 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

답변

3

당신이 QList<QTreeWidgetItem *>::iterator를 시도은?

+0

고맙습니다. 이미'QList '을 사용하려고했지만'qDebug() << i;'를'qDebug() << * i;'로 변경하는 것을 잊어 버렸습니다. 내 초점을 잃어 버렸다. –

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'입니다. –