我有一个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