English 中文(简体)
在qt4.4.3中,QVariant / QTreeWidgetItem / iterator的问题
原标题:
  • 时间:2009-01-05 19:00:04
  •  标签:

在我的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>();
}

但是什么都不起作用,我甚至无法编译程序。帮忙吧!:D

最佳回答

也许:

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

顺便说一下,使用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){
    ...
}
问题回答

暂无回答




相关问题
热门标签