Как создать объект QJSValue типа Ошибка — выбрасывая ошибки из QJSEngine

В Qt кто-нибудь знает, как создать QJSValue типа Ошибка?

контекст: Я использую QJSEngine :: оценить () выполнить код JavaScript, написанный пользователем в GUI, созданном с помощью QT. Этот код JavaScript вызывает функцию C ++. Согласно документации, QJSEngine ::valu () генерирует исключение скрипта (QJSValue типа Error), только если в коде JavaScript есть ошибка. Поэтому, если в функции C ++ есть ошибка, мой подход — вернуть QJSValue типа error. Я иду по этому пути, потому что QJSEngine ::valu не перехватывает исключения C ++.

Вот фрагмент кода предполагаемой функциональности:

void CMainWindow::slot_ExecuteJVScript()
{
myCppClass myObject(parameters); //It has a foo() method.
QJSEngine myEngine;
myEngine.globalObject().setProperty("myObj", myEngine.newQObject(&myObject)); //Now we can access the C++ object from JavaScript code.
QString myScriptJS = "var X = myObj.foo()";  //Calling a C++ function from JavaScript
QJSValue myValue = myEngine.evaluate(myScriptJS);
if(myValue.isError())
{
//If there is an error in the JavaScript code we enter here
//But I also wanto to enter here if there is an error in my foo() C++ function.
}
else
{
//Do things with myValue
}
}

Мини-пример myCppClass :: foo ()

QJSValue myCppClass::foo()
{
if(something)
{
//Create a QJSValue myValue with some data
return myValue;
}
else
{   //ERROR
//Create a QJSValue of type Error
return myValueOfTypeError;
}
}

Огромное спасибо.

2

Решение

Задача ещё не решена.

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

Других решений пока нет …

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