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 также.

1 ответ

Решение

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

Другие вопросы по тегам