从QMutableListIterator获取当前项目

时间:2010-08-12 11:11:26

标签: c++ qt

我不能像QL迭代器一样取消引用QMutableListIterator - 使用*它。

我正在尝试使用QMutableListIterator :: value()但我的程序崩溃了。这样做的正确方法是什么?

QFileInfoList files;
// populate list
QListIterator<QFileInfo> it(files);
it.toFront();
QFileInfo = it_top.value();
// crash

错误是

ASSERT: "item_exists()" in file /usr/include/qt4/QtCore/qlist.h, line 778

由于

2 个答案:

答案 0 :(得分:2)

我刚检查了“toFront”的Qt文档,并说:

  

将迭代器移动到前面   容器(在第一项之前)。

http://doc.trolltech.com/latest/qmutablelistiterator.html#toFront

Qt迭代器是Java样式的迭代器,它在项目之前开始并在最后一个项目结束,C ++样式迭代器从第一个项目开始并在最后一个项目之后结束。

答案 1 :(得分:0)

您所显示的代码没有任何问题。

问题实际上在于// populate list

实际我猜 QFileInfoList中没有项目填充。这就是您在尝试访问时获得ASSERT的原因。

并检查hasNext()返回值。最有可能它会返回false。

希望它在某种程度上有所帮助..