我有C++类发出信号和QML插槽。程序返回事件循环后,我需要在同一线程中执行插槽。

我怎样才能实现这样的目标?

Connections {
    target: box2dCppEngine
    onBulletCollided: box2dCppEngine.deleteObject(bullet)
    connectionType: Qt.QueuedConnection
}

我需要这个,因为我无法执行deleteObject,而在处理冲突时,我需要在世界一步之后执行此操作。

最佳答案

我不知道QML有多少,但是我可以提供另一种方法:
看看QObject::deleteLater()



由于是插槽,因此您可以将信号直接连接到bullet.deleteLater(),也可以在deleteLater插槽中调用deleteObject

09-27 08:13