2011-12-01 56 views
1

我使用Qt(蘋果機,版本4.7),以呈現一個相當大的場景(從開放街道地圖的地圖數據)的QGraphicsView和QGraphicsScene。一切都很好,直到我嘗試爲場景中的項目設置Z值。我已經嘗試了兩種單獨的方法來做到這一點。在一個,我只是做:有關一個的QGraphicsItem QGraphicsScene使用setZValue造成重大放緩

QGraphicsPathItem *item = scene->addPath(path, pen); 
item->setZValue(z); 

和其他創建我自己的QGraphicsItem的子類,但得到完全相同的問題。

緩慢的原因似乎是Qt方面的事情。一旦我設定z值(需要幾分鐘才顯示任何東西,並且我得到旋轉的死亡沙灘球),場景產生需要很長時間,但一旦產生,速度就會恢復正常。另外,當我嘗試關閉應用程序時,它會在關閉之前掛起幾分鐘。如果我單獨保留z值,並沒有看到任何這些問題,並且我添加了調試代碼來驗證它沒有出現在我自己的代碼中。

不幸的是,我需要以正確地呈現街頭設置的Z值(例如輪廓周圍的道路,使高速公路高階不是通過街道等)。

任何幫助,非常感謝!

回答

4

您可以嘗試設置bspTreeDepth爲固定值。它控制場景中物品的位置。用大量現有物品改變深度可能會非常昂貴。

優化另一名候選人是itemIndexMethod。將其設置爲noIndex實際上可能會提高性能。

+0

itemIndexMethod像魅力一樣工作。我嘗試了bspTreeDepth的幾個值,但沒有多少運氣。謝謝! –

相關問題