更改 QML 对象的 QQmlContext?

dte*_*ech 5 qt qml qqmlengine qqmlcontext

显然,即使对象与现有的父对象分离并附加到新的父对象,当旧的父上下文被销毁时,对象也会被销毁。

想到的第一个解决方案是在持久上下文中创建对象。但是,动态范围属性将不适用于它。这对我的用例至关重要。如果对象不在其父对象的上下文中,并且父对象发生变化,我将无法运行。此外,即使目标对象具有函数,也无法再调用函数,因为 QML attempted to evaluate a function in an invalid context.

尝试诉诸QQmlEngine::setContextForObject()并且QQmlEngine::contextForObject()只是发现一旦设置,就无法重置上下文。

那么,有什么新鲜的想法吗?