我可以保留传递给 QJSEngine 的 QObject 的所有权吗?
Can I retain ownership of QObjects passed to QJSEngine?
我正在使用 QJSEngine 并使用 engine.globalObject().setProperty(name, engine.newQObject(obj));
绑定一些对象
问题是 QJSEngine 析构函数正在调用那些对象的析构函数,但我希望它们比 QJSEngine 对象长寿。
即使我从 globalObject() 中删除 属性,也会发生这种情况。
看起来使用 QQmlEngine 而不是 QJSEngine 可以访问 setObjectOwnership
,从而可以解决该问题。
https://doc.qt.io/qt-5/qqmlengine.html#setObjectOwnership
虽然我从文档中了解到,从 Q_INVOKABLE 方法返回的对象仍然是一个问题,我不确定如何保留其所有权。所以如果有人有什么想法,我想知道他们。
我正在使用 QJSEngine 并使用 engine.globalObject().setProperty(name, engine.newQObject(obj));
问题是 QJSEngine 析构函数正在调用那些对象的析构函数,但我希望它们比 QJSEngine 对象长寿。
即使我从 globalObject() 中删除 属性,也会发生这种情况。
看起来使用 QQmlEngine 而不是 QJSEngine 可以访问 setObjectOwnership
,从而可以解决该问题。
https://doc.qt.io/qt-5/qqmlengine.html#setObjectOwnership
虽然我从文档中了解到,从 Q_INVOKABLE 方法返回的对象仍然是一个问题,我不确定如何保留其所有权。所以如果有人有什么想法,我想知道他们。