我不能像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
由于
答案 0 :(得分:2)
我刚检查了“toFront”的Qt文档,并说:
将迭代器移动到前面 容器(在第一项之前)。
http://doc.trolltech.com/latest/qmutablelistiterator.html#toFront
Qt迭代器是Java样式的迭代器,它在项目之前开始并在最后一个项目结束,C ++样式迭代器从第一个项目开始并在最后一个项目之后结束。
答案 1 :(得分:0)
您所显示的代码没有任何问题。
问题实际上在于// populate list
实际我猜 QFileInfoList
中没有项目填充。这就是您在尝试访问时获得ASSERT
的原因。
并检查hasNext()
返回值。最有可能它会返回false。
希望它在某种程度上有所帮助..