我有一个 QGraphicsScene,其中项目的顺序非常重要。我想在项目列表中的某个索引处添加项目(即items()
调用时返回的列表)。
我知道 QList 具有removeAt()
andinsert()
功能,但 QGraphicsScene 是否有类似的东西,比如addItemAt()
所有这些行?如果没有,有没有人知道解决这个问题的好方法?
我有一个 QGraphicsScene,其中项目的顺序非常重要。我想在项目列表中的某个索引处添加项目(即items()
调用时返回的列表)。
我知道 QList 具有removeAt()
andinsert()
功能,但 QGraphicsScene 是否有类似的东西,比如addItemAt()
所有这些行?如果没有,有没有人知道解决这个问题的好方法?
没有选项可以在插入时指定订单。默认情况下,最近添加的项目将显示在顶部。
在将同级项目(具有相同父项的项目)添加到场景后,您有两个选项来确定它们的堆叠顺序。
指定 Z 值。
更改插入顺序(适用于具有相同 Z 值的项目)。
如果您希望按 Z 值排列,则需要为您的项目分配特定的 Z 值,并在使用QGraphicsItem::setZValue()添加新项目时根据需要重新分配它们。
或者,您可以通过调用QGraphicsItem::stackBefore()来更改项目的插入顺序。