我有一個QGraphicsScene約1000 QGraphicsItems,其實是物理項目。他們前進的每一幀,檢查碰撞,並解決其中的衝突。我真的很想擁有物理多線程。Qt物理場景多線程
我的理解是QGraphics類不是線程安全的。意思是,他們只能從主線程調用。這是否迫使我使用信號/插槽機制將每幀的最終項目屬性(x,y,旋轉)發送到主線程,然後使用主線程方法實際更新QGraphicsItems?還是有更簡單的方法來做到這一點?
以下是一個假設:我可以使用QtConcurrent在我的QGraphicsItems列表上運行一個方法嗎?如果我在我的QGraphicsItem繪畫方法中使用QMutex,並在我的物理方法中使用QMutex(這會改變我的QGraphicsItem的屬性),這是否可以保證在任何時刻只有一個線程正在讀取/寫入每個QGraphicsItem?
我讀過一些關於在連接信號/插槽時使用QueuedConnection的內容。我沒有嘗試過,甚至沒有看過細節,但我認爲這值得進一步調查。有沒有其他人有這方面的經驗? – aldo 2012-04-06 05:33:45
我使用了Box2D的Delphi端口,對此我非常滿意。爲什麼不試一試呢?如果您有興趣,請前往此[網頁](http://labs.qt.nokia.com/2010/02/26/qt-box2d-is-easy/)。 – menjaraz 2012-04-06 13:30:43
Box2D看起來很有趣,但我沒有看到它是多線程的。 – Joel 2012-04-06 14:44:05