サブクラス化された 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 で作成するため)。それを回避する方法、引数の所有権を変更する方法は?
スクリプトは簡単です:
function(device) {
return device.m_place >=0 && device.m_place < 16;
}
UPD:QQmlEngine::setObjectOwnership(child, QQmlEngine::CppOwnership);
静的関数であるため、オブジェクト
を呼び出すことができます。ヘルプだけではわかりません。も入っていると思われますQJSEngine
。