我有一个 QList 用于在 QgraphicsScene 上存储一些项目,例如:
QList<QGraphicsItem*> lineList;
当我想像这样使用它时:
lineList[itemIndex++]=scene->createItemGroup(groupItems);
我遇到了运行时错误。我很好奇为什么?
顺便说一句,我知道 linelist.append()
谢谢。
我有一个 QList 用于在 QgraphicsScene 上存储一些项目,例如:
QList<QGraphicsItem*> lineList;
当我想像这样使用它时:
lineList[itemIndex++]=scene->createItemGroup(groupItems);
我遇到了运行时错误。我很好奇为什么?
顺便说一句,我知道 linelist.append()
谢谢。
假设您要创建一个新的 QList,您应该使用QList::append() or << operator
. 来自 Qt 文档:
T & QList::operator[](int i) 返回索引位置 i 处的项目作为可修改的引用。i 必须是列表中的有效索引位置(即 0 <= i < size())。此功能非常快(恒定时间)。另请参见 at() 和 value()。
所以QList::operator[]
不能用来填充这样的列表。
假设itemIndex++
等于或小于lineList.size()
,您可以使用QList::insert
lineList.insert(itemIndex++, scene->createItemGroup(groupItems));
无论如何,最好append
用于将您的列表扩展一个单位。