QJSEngine удаляет мой QObject, как сменить владельца после QJSEngine :: newQObject?

Попытка выполнить небольшой скрипт с вложенным QObject в качестве параметра.

QJSEngine jsEngine;
QJSValue arg = jsEngine.newQObject(child); // Child it's subclassed QObject
QJSValue function = jsEngine.evaluate(m_childRestriction);

QJSValue result = function.call(QJSValueList() << arg);

При уничтожении jsEngine он вызывает delete для моего дочернего объекта (так как newQObject создает его с помощью JavaScriptOwnership). Как этого избежать, как сменить владельца на arg?

Сценарий прост:

function(device) {
return device.m_place >=0 && device.m_place < 16;
}

UPD:
Можно позвонить QQmlEngine::setObjectOwnership(child, QQmlEngine::CppOwnership); для объекта, как это статическая функция. Это просто не понятно из справки. Думаю, что это должно быть в QJSEngine также.

4

Решение

Можно вызвать QQmlEngine :: setObjectOwnership (child, QQmlEngine :: CppOwnership); для объекта, как это статическая функция. Это просто не понятно из справки. Думаю, это должно быть и в QJSEngine.

1

Другие решения


По вопросам рекламы [email protected]