2015-04-08 39 views
1

我有許多qgraphicsitem這是在地圖上的航點。 我想將它們一起移動。 因此我使用for循環來調用它們的setPos()函數。 但是,當項目數量變大(超過100)。 此舉變得緩慢...... 我該如何更有效地做到這一點?如何高效地移動大量的qgraphicsitem?

+0

你在移動過程中爲每個像素調用'setPos()'嗎? – vahancho

+0

我在移動過程中爲每個QGraphicsItem調用了setPos。 – Nyaruko

+0

移動完成後,您只能調用setPos()僅用於最後一個位置。例如,如果將項目從A點移動到B,請僅爲B點調用setPos(),而不是A和B之間的每個點。 – vahancho

回答

3

如果您將它們全部移動相同數量,那麼您可以使用QGraphicsItemGroup將所有路點項目分組;然後,您可以簡單地移動項目組以自動移動該組中的所有項目。

+0

這樣更快嗎? – Nyaruko

+1

嘗試一下就不會有什麼傷害 - 如果沒有其他的話,它肯定不會變慢,並且它會幫助你簡化你的代碼。 –

+0

@Nyaruko是的,這應該是顯着更快,因爲每個'setPos(..)'調用之前會觸發一個場景圖更新(並可能是一個繪畫事件,儘管可能有優化)。移動單個父項目會導致單個場景圖評估。 – cmannett85

相關問題