2

我有一个 QGraphicsScene,其中项目的顺序非常重要。我想在项目列表中的某个索引处添加项目(即items()调用时返回的列表)。

我知道 QList 具有removeAt()andinsert()功能,但 QGraphicsScene 是否有类似的东西,比如addItemAt()所有这些行?如果没有,有没有人知道解决这个问题的好方法?

4

1 回答 1

1

没有选项可以在插入时指定订单。默认情况下,最近添加的项目将显示在顶部。

在将同级项目(具有相同父项的项目)添加到场景后,您有两个选项来确定它们的堆叠顺序。

  1. 指定 Z 值。

  2. 更改插入顺序(适用于具有相同 Z 值的项目)。

如果您希望按 Z 值排列,则需要为您的项目分配特定的 Z 值,并在使用QGraphicsItem::setZValue()添加新项目时根据需要重新分配它们。

或者,您可以通过调用QGraphicsItem::stackBefore()来更改项目的插入顺序。

于 2012-06-14T04:53:44.697 回答