문제

QT 앱에는 QtreeWidget의 내용을 설정하기 전에이 객체가 채워져 있습니다.

QList<QTreeWidgetItem*> items;

이런 식으로 QList를 채 웁니다.

QVariant qv; // I need this for "attaching" to the item my linuxPackage object
qv.setValue(linuxPackage);
packRow->setData(1, Qt::UserRole,qv); // packRow is my own object inherited from QTreeWidgetItem, I "put" the QVariant into it
items.append(packRow); // then I put my item into the QList

작업이 끝나면 QList에는 거의 1000 개의 항목이 있습니다.

나는 그들을 반복해야하며 각 항목에 대해이 (테스트 및 작업) 방식으로 "LinuxPackage"데이터를 가져와야합니다.

Pkg linuxPackage = this->data(1,Qt::UserRole).value<Pkg>(); // Pkg is my own class for the linuxPackage object

그래서 저는 이러한 방식으로 필요한 데이터를 추출하려고 노력했습니다.

QList<QTreeWidgetItem*>::iterator iter; 
for (iter = items.begin(); iter != items.end(); ++iter){
    Pkg pack = iter->data(1,Qt::UserRole).value<Pkg>();
}

그러나 아무것도 작동하지 않으며 프로그램을 컴파일 할 수도 없습니다. 돕다! :디

도움이 되었습니까?

해결책

아마도:

(*iter)->data(1,Qt::UserRole).value<Pkg>();

BTW, QT4로 더 쉬운 방법 :

foreach (const QTreeWidgetItem *item, items) {
    Pkg pack = item->data(1,Qt::UserRole).value<Pkg>();
}

최소한 사용해야합니다 const_iterators =)

QList<QTreeWidgetItem*>::const_iterator iter; 
for (iter = items.constBegin(); iter != items.constEnd(); ++iter){
    ...
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top