Let us now take a look at some of the optimizations we can perform to speed up the scene.
The scene constantly keeps record of the position of the item in its internal binary space partition tree. Thus, on every move of an item, the scene has to update the tree, an operation that can become quite time-and memory-consuming. This is especially true of scenes with a large number of animated items. On the other hand, the tree enables you to find an item (for example, with items()
or itemAt()
) incredibly fast even if you have thousands of items.
So when you do not need any positional information about the items—this also includes collision detection—you can disable the index function by calling setItemIndexMethod(QGraphicsScene::NoIndex)
. Be aware, however, that a call to items()
or itemAt()
results in a loop through all items in order to do the collision detection, which can cause performance problems for scenes with many items. If you cannot relinquish...